Fil:Capri sights.png

Page contents not supported in other languages.
Fra Wikipedia, den frie encyklopædi

Fuld opløsning(2.000 × 1.100 billedpunkter, filstørrelse: 1,05 MB, MIME-type: image/png)


Denne fil er fra Wikimedia Commons

Beskrivelse

Beskrivelse
English: Map of Capri. Uses terrain data from SRTM3 (http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N40E014.hgt.zip).

Bitmap version of File:Capri_sights_terrain.svg.

Note: An offical map of Capri (with roads, etc.) can be found at http://www.capritourism.com/imgg/download/capri_map_en.pdf
Dato
Kilde Eget arbejde
Forfatter Morn the Gorn
compass rose from Maps_template-fr.svg: Eric Gaba (Sting - fr:Sting)
Road and rail data from OpenStreetMap
Andre versioner

Code

Terrain shading layer was generated with the following Python script (requires Python Imaging Library and NumPy):

# Read SRTM3 file and create shaded relief

# 2010-04-05

from struct import unpack,calcsize

from numpy import *
import numpy as np
from PIL import Image

row_length = 1201	# row_length is 1201 for SRTM3 or 3601 for SRTM1
file_name  = "N40E014.hgt"	# from http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/
hlim       = 800	# height limit for map [m]

ref_lat    = 40.55	# reference latitude
earth_eq   = 6371. * 1000. * 2. * pi
x_scale    = 1./360.*earth_eq*cos(ref_lat/180.*pi)/row_length
y_scale    = 1./360.*earth_eq/row_length

print "1 pixel = %u * %u m" % (x_scale, y_scale)
print "factor", y_scale/x_scale

h = zeros((row_length, row_length))
f = open(file_name, 'r')
li = []

for j in range(row_length):
	for i in range(row_length):
		d = f.read(2)
		(height,) = unpack('>h', d)
	        h[i,j] = height
		if height < -1000:
			li.append((i,j))

hmax = h.max()
h3 = zeros_like(h)
h3[:,:] = h[:,:]
print len(li), "missing data points"

def get_nei(z):
	h2 = h[z[0]-1:z[0]+2,z[1]-1:z[1]+2]
	nn = sum(where(h2 < -1000, 0, 1))
	av = sum(where(h2 > -1000, h2, 0)) / float(nn)
	return nn, av

# fill missing points with a nearest-neighbor averaging method:
loop = len(li)
lim = 7
while loop > 0:
	sd = False
	for q in range(len(li)):
		if h[li[q]] > -1000.: continue
		n, a = get_nei(li[q])
		if n >= lim:
			print li[q],loop, n, a, lim
			h3[li[q]] = a
			loop -= 1
			sd = True
	if not sd: lim -= 1
	h[:,:] = h3[:,:]
print "missing points done"	

def hext(a):
	"Hex color to triplet."
	r,g,b = a[0:2], a[2:4], a[4:6]
	return int(r, 16), int(g, 16), int(b, 16)

# from http://en.wikipedia.org/wiki/Wikipedia:WikiProject_Maps/Conventions/Topographic_maps:
col_sea = hext("0978ab")
cols = """
{{Mapcolor|r=245|v=244|b=242|hex=#F5F4F2|col=black}}
{{Mapcolor|r=224|v=222|b=216|hex=#E0DED8|col=black}}
{{Mapcolor|r=202|v=195|b=184|hex=#CAC3B8|col=black}}
{{Mapcolor|r=186|v=174|b=154|hex=#BAAE9A|col=black}}
{{Mapcolor|r=172|v=154|b=124|hex=#AC9A7C|col=black}}
{{Mapcolor|r=170|v=135|b=83|hex=#AA8753|col=black}}
{{Mapcolor|r=185|v=152|b=90|hex=#B9985A|col=black}}
{{Mapcolor|r=195|v=167|b=107|hex=#C3A76B|col=black}}
{{Mapcolor|r=202|v=185|b=130|hex=#CAB982|col=black}}
{{Mapcolor|r=211|v=202|b=157|hex=#D3CA9D|col=black}}
{{Mapcolor|r=222|v=214|b=163|hex=#DED6A3|col=black}}
{{Mapcolor|r=232|v=225|b=182|hex=#E8E1B6|col=black}}
{{Mapcolor|r=239|v=235|b=192|hex=#EFEBC0|col=black}}
{{Mapcolor|r=225|v=228|b=181|hex=#E1E4B5|col=black}}
{{Mapcolor|r=209|v=215|b=171|hex=#D1D7AB|col=black}}
{{Mapcolor|r=189|v=204|b=150|hex=#BDCC96|col=black}}
{{Mapcolor|r=168|v=198|b=143|hex=#A8C68F|col=black}}
{{Mapcolor|r=148|v=191|b=139|hex=#94BF8B|col=black}}
{{Mapcolor|r=172|v=208|b=165|hex=#ACD0A5|col=black}}
"""
col = []

for l in cols.splitlines():
	if len(l) < 10: continue
	i = l.find('#')
	if i > -1:
		col.append(hext(l[i+1:i+7]))

col.reverse()	# -> bottom to top

o = Image.new('RGB', h.shape)

def interp(c, f):
	"Interpolate into color table."
	r = int((1.-f) * col[c][0] + f * col[c+1][0])
	g = int((1.-f) * col[c][1] + f * col[c+1][1])
	b = int((1.-f) * col[c][2] + f * col[c+1][2])
	return r,g,b

for j in range(row_length):
	for i in range(row_length):
		c, f = divmod(h[j,i] / hmax * (len(col)-1), 1)
		if 0 < h[j,i] < hmax:
			o.putpixel((j,i), interp(int(c), f))
		elif h[i,j] == hmax:
			o.putpixel((j,i), col[-1])
		else: o.putpixel((j,i), col_sea)

o.save("map_height.png")	# save height map
o2 = o.crop((0,0,942,603))
o2.save("map_height_cropped.png")

# taken from hillshade.py:
#def illumination(idata,azdeg=315.0,altdeg=45.):
def illumination(idata,azdeg=225.0,altdeg=45.):
    # convert alt, az to radians
    az = azdeg*np.pi/180.0
    alt = altdeg*np.pi/180.0
    # gradient in x and y directions
    dx, dy = np.gradient(idata)
    slope = 0.5*np.pi - np.arctan(np.hypot(dx, dy))
    aspect = np.arctan2(dx, dy)
    odata = np.sin(alt)*np.sin(slope) + np.cos(alt)*np.cos(slope)*np.cos(-az -\
             aspect - 0.5*np.pi)
    # rescale to interval -1,1
    # 1 means maximum sun exposure and 0 means complete shade.
    odata = (odata - odata.min())/(odata.max() - odata.min())
    return odata

il = 255 * illumination(h)

o4 = Image.new('RGBA', il.shape)
for j in range(row_length-1):
	for i in range(row_length-1):
		v = int(il[j,i])
		if 0 <= v < 128:
			alpha = (255 - 2*v)
			o4.putpixel((j,i), (0,0,0,alpha))
		elif v == 128:
			o4.putpixel((j,i), (0,0,0,0))
		elif 128 < v < 256:
			alpha = 2*(v-128)
			o4.putpixel((j,i), (255,255,255,alpha))
		else:
			o4.putpixel((j,i), (255,255,255,0))
o4.save("il_NW_alpha.png")	# NW-illuminated (alpha transparency for use with Inkscape)

Licensering

Jeg, dette værks ophavsretsindehaver, udgiver hermed værket under den følgende licens:
w:da:Creative Commons
kreditering deling på samme vilkår
Du må frit:
  • at dele – at kopiere, distribuere og overføre værket
  • at remixe – at tilpasse værket
Under følgende vilkår:
  • kreditering – Du skal give passende kreditering, angive et link til licensen, og oplyse om der er foretaget ændringer. Du må gøre det på enhver fornuftig måde, men ikke på en måde der antyder at licensgiveren godkender dig eller din anvendelse.
  • deling på samme vilkår – Hvis du bearbejder, ændrer eller bygger videre på dette værk, skal du distribuere dine bidrag under den samme eller en kompatibel licens som originalen.
GNU head Tilladelse er givet til at kopiere, distribuere og/eller ændre dette dokument under betingelserne i GNU Free Documentation License', Version 1.2 eller enhver senere version udgivet af Free Software Foundation; uden et invariant afsnit, ingen forsidetekster, og ingen bagsidetekst. En kopi af licensen er inkluderet i afsnittet GNU Free Documentation License.
Du kan vælge den licens du foretrækker.

Captions

Tilføj en kort forklaring på en enkelt linje om hvad filen viser

Elementer som er med i denne fil

afbilder

image/png

dd052a2b31b71693be103e2d85c8a0c6f50ea7ad

1.105.800 Byte

1.100 pixel

2.000 pixel

Filhistorik

Klik på en dato/tid for at se filen som den så ud på det tidspunkt.

(Nyeste | Ældste) Se (10 nyere | ) (10 | 20 | 50 | 100 | 250 | 500)
Dato/tidMiniaturebilledeDimensionerBrugerKommentar
nuværende1. okt. 2010, 00:15Miniature af versionen fra 1. okt. 2010, 00:152.000 × 1.100 (1,05 MB)Mornadded OpenStreetMap layer
8. apr. 2010, 00:55Miniature af versionen fra 8. apr. 2010, 00:552.000 × 1.100 (951 KB)Mornadded scale in feet
7. apr. 2010, 20:44Miniature af versionen fra 7. apr. 2010, 20:442.049 × 1.154 (956 KB)Mornmore mountains
7. apr. 2010, 15:47Miniature af versionen fra 7. apr. 2010, 15:472.000 × 1.100 (935 KB)Mornmountain heights
6. apr. 2010, 23:48Miniature af versionen fra 6. apr. 2010, 23:482.000 × 1.100 (914 KB)MornPhilosophical Park as area
5. apr. 2010, 20:58Miniature af versionen fra 5. apr. 2010, 20:582.000 × 1.100 (909 KB)Mornimproved terrain
4. apr. 2010, 20:59Miniature af versionen fra 4. apr. 2010, 20:592.000 × 1.100 (857 KB)Morncompass rose
4. apr. 2010, 17:45Miniature af versionen fra 4. apr. 2010, 17:452.000 × 1.100 (818 KB)Mornhypsometric colors
4. apr. 2010, 02:32Miniature af versionen fra 4. apr. 2010, 02:322.000 × 1.127 (670 KB)Mornslightly stronger colors
3. apr. 2010, 21:44Miniature af versionen fra 3. apr. 2010, 21:442.000 × 1.100 (655 KB)Mornterrain shading from SRTM 3 data
(Nyeste | Ældste) Se (10 nyere | ) (10 | 20 | 50 | 100 | 250 | 500)

Den følgende side bruger denne fil:

Global filanvendelse

Følgende andre wikier anvender denne fil:

Vis flere globale anvendelser af denne fil.