Moin Moin Freunde
Die schlechte Nachricht vorab: Ich habe nie Python gelernt und es auch nicht vor, ich kann leider im Moment nicht Stundenweise ins Programmieren investieren
Die gute Nachricht: Ich bin fit in einigen anderen Dingen, PHP, Matlab, Java, ...
Deswegen stelle ich euch hier mal ne Frage von der ich hoffe, dass es eine fixe lösung gibt
Und zwar benutze ich das Script hier: https://gist.github.com/eskriett/6038468 , welches auch sehr gute Dienste leistet. Allerdings möchte ich Hybrid-Satellitenbilder haben
Denken wir uns die Koordinaten: x = 67, y = 42, z = 7
Dann benutzt das Script, wenn ich das richtig sehe, den Link:
https://mt0.google.com/vt?x=67&y=42&z=7
für Satellitenbilder allerdings brauche ich einen weiteren Parameter (lyrs=s,p)
https://mt0.google.com/vt?x=67&y=42&z=7&lyrs=s,p
also, dachte ich mir, ändere ich einfach Zeile 91 um in:
url = 'https://mt0.google.com/vt?lyrs=s,p&x='+ ... elf._zoom)
Das wiederum wirft mir aber den Fehler aus Zeile 111.
print("Could not generate the image - try adjusting the zoom level and checking your coordinates")
Kann mir da jemand helfen?
Google Map Downloader
Okay, habe ich gemacht. Man, musste erstmal rausfinden wie wichtig einrücken ist. Also hier der relevante Code:
Hier der Fehler:
(Zeilennummern an obiges Beispiel angepasst)
Mir kommt das ganze echt ziemlich komisch vor. Vielleicht hat die Datei ja auf einmal ein anderes Format? Ohne die änderung funktioniert es wunderbar.
https://mt0.google.com/vt?x=67&y=42&z=7 und
https://mt0.google.com/vt?lyrs=s,p&x=67&y=42&z=7
geben ja aber doch nicht so unterschiedliche resultate aus
Code: Alles auswählen
#!/usr/bin/python
(...)
def generateImage(self, **kwargs):
"""
Generates an image by stitching a number of google map tiles together.
Args:
start_x: The top-left x-tile coordinate
start_y: The top-left y-tile coordinate
tile_width: The number of tiles wide the image should be -
defaults to 5
tile_height: The number of tiles high the image should be -
defaults to 5
Returns:
A high-resolution Goole Map image.
"""
start_x = kwargs.get('start_x', None)
start_y = kwargs.get('start_y', None)
tile_width = kwargs.get('tile_width', 5)
tile_height = kwargs.get('tile_height', 5)
# Check that we have x and y tile coordinates
if start_x == None or start_y == None :
start_x, start_y = self.getXY()
# Determine the size of the image
width, height = 256 * tile_width, 256 * tile_height
#Create a new image of the size require
map_img = Image.new('RGB', (width,height))
for x in range(0, tile_width):
for y in range(0, tile_height) :
url = 'https://mt0.google.com/vt?lyrs=s&x='+str(start_x+x)+'&y='+str(start_y+y)+'&z='+str(self._zoom)
current_tile = str(x)+'-'+str(y)
urllib.urlretrieve(url, current_tile)
im = Image.open(current_tile)
map_img.paste(im, (x*256, y*256))
os.remove(current_tile)
return map_img
def main():
# Create a new instance of GoogleMap Downloader 4,11 -> 127,88
gmd = GoogleMapDownloader(81.5,-166, 7)
print("The tile coorindates are {}".format(gmd.getXY()))
img = gmd.generateImage()
img.save("high_resolution_image.png")
print("The map has successfully been created")
if __name__ == '__main__': main()
Code: Alles auswählen
Traceback (most recent call last):
File "GoogleMapDownloader.py", line 58, in <module>
if __name__ == '__main__': main()
File "GoogleMapDownloader.py", line 53, in main
img = gmd.generateImage()
File "GoogleMapDownloader.py", line 41, in generateImage
map_img.paste(im, (x*256, y*256))
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1088, in paste
im.load()
File "/Library/Python/2.7/site-packages/PIL/ImageFile.py", line 189, in load
d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 385, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available
Mir kommt das ganze echt ziemlich komisch vor. Vielleicht hat die Datei ja auf einmal ein anderes Format? Ohne die änderung funktioniert es wunderbar.
https://mt0.google.com/vt?x=67&y=42&z=7 und
https://mt0.google.com/vt?lyrs=s,p&x=67&y=42&z=7
geben ja aber doch nicht so unterschiedliche resultate aus
@dg2015: Nicht nur vielleicht: Die erste URL liefert Bilder im PNG-Format, die zweite im JPG-Format. Und da scheint eine Abhängigkeit zu fehlen um die lesen zu können. `libjpeg` wahrscheinlich.
libjpeg habe ich jetzt mal installiert.
ich habe mir dann das folgende ausgeben lassen:
ersterer Link gibt mir:
der zweite:
jetzt habe ich rausgefunden, dass hier verschiedene dateitypen vorliegen. aber wie geht es weiter?
Code: Alles auswählen
Traceback (most recent call last):
File "GoogleMapDownloader.py", line 58, in <module>
if __name__ == '__main__': main()
File "GoogleMapDownloader.py", line 53, in main
img = gmd.generateImage()
File "GoogleMapDownloader.py", line 40, in generateImage
im = Image.open(current_tile)
File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1980, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
Code: Alles auswählen
print(urllib.urlopen(url).read())
Code: Alles auswählen
?PNG
IHDk?XT pHYs??PLTE????Cf@UIDATx????? ?O?H?47N?UIEND?B`?
Code: Alles auswählen
????JFIF???
(...) Viele Zeilenumbrüche
?"??3!"12ABRQabr?#q????CS????%"2!1ABRrb??(...)
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Welches OS hast du? Welche Python Version willst du benutzen?
Ich habe einfach mal das Script mit deiner neuen Zeile 91, und dem Testausschnitt "gmd = GoogleMapDownloader(51.5171, 0.1062, 13)" ausprobiert, und es funktioniert.
Ich habe einfach mal das Script mit deiner neuen Zeile 91, und dem Testausschnitt "gmd = GoogleMapDownloader(51.5171, 0.1062, 13)" ausprobiert, und es funktioniert.