Menu
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

Skapa geodata från Python

Posted on 2016-08-16

Igår använde jag ExifRead för att läsa GPS taggar från foton, men för att skapa punkter baserade på dessa data så krävs det något mera. I ArcMap så finns det inbyggda funktioner för detta, men nu tänkte jag se om det går att göra detta helt i Python.

Möjligt är det naturligtvis, men frågan är om det är såpass enkelt att min ”skript-fu” räcker för att klara av det.

Efter en kort sökning på nätet så verkar det vara ”osgeo” biblioteket med exempelvis gdal och ogr som är den mest framgångsrika vägen framåt.

Detta bibliotek kan installeras eller hanteras på samma sätt som ExifRead så det behöver inte upprepas (Sökväg).

Skärmbild_2016-08-13_11-07-37.png

Själva Pythonbiblioteken finns under ”gdal/swig/python”. Men tyvärr så är det ett bekymmer. Binärfiler för GDAL behöver också installeras! Jag kan således inte använda en metod för att skapa geodata med GDAL som inte kräver administratörsrättigheter. Om GDAL däremot redan finns på klienten, så kan det fungera.

GDAL binärfiler kan installeras (säkrast via OsGeo4W) på olika sätt, så det tar jag inte upp här. Var dock noga med att få filer som passar din pythonversion och dator. För mig så är detta dock en återvändsgränd, så nu gäller det att hitta alternativ.

Textfil

Det enklaste kommer att vara att skapa en separerad textfil, som sedan kan importeras med ArcMap eller FME till en geodatabas.

I python behöver jag då bara skapa en rad uppdelad i attribut, inklusive koordinater, och skriva denna till en textfil med ”textfil.write()”.

textfil = open("text.tab", "w")
textfil.write("long\tlat\tbildnamn\n")
for bild in sökväg:
   # Läs EXIF data för varje bild och skapa innehåll för variablerna nedan.
   textfil.write("%s\t%s\t%s\n" % (longitud, latitud, bildfil))
textfil.close()

Enklast är ofta bäst. Men vad är det som händer i koden ovan?

Först öppnas en fil i ”skrivläge” ( w ). Om den inte finns skapas den, och om den redan finns så skrivs den över! Skriv en rad med rubriker separerade med ”tab” ( \t ) och avsluta med en ny rad ( \n ).

För varje bild i en angiven sökväg så kan man sedan gå igenom och läsa in eventuella GPS data från exif (se gårdagens inlägg).

Skriv en ny rad till textfilen på samma sätt som rubrikerna, men här används substitut med ”%s” vilket är ett vanligt sätt att hantera texter i python.

Avslutningsvis så skall textfilen stängas.

Finns det några andra alternativ?

GeoJSON

GeoJSON får agera exempel på flera typer av data som inte bara är krångligare än en textfil, utan även har begränsat stöd i målsystemet med ArcGIS.

Det finns pythonbibliotek för att skriva till GeoJSON och dessa är inte svårare att lägga till än några andra pythonbibliotek. Jag kan tänka mig att det finns motsvarande för att skriva till KML eller liknande enkla geodataformat. Inget blir däremot enklare än en textfil.

Slutsatser

Om jag inte kan använda GDAL (får undersöka detta vidare) och skriva direkt till en shapefile eller geodatabas, så blir alla andra alternativ en dellösning som ändå skall importeras i ArcGIS. Då kan jag lika gärna använda något enkelt som sedan ändå inte är svårt att exempelvis skapa ett skript för i FME eller ArcGIS för att läsa in.

Något som slår mig nu är om det inte är möjligt att läsa EXIF direkt i FME…

(Byter flik och Googlar…)

Skit! Allt detta går att göra i FME! Ange katalog med bilder, sök igenom, hämta EXIF/GPS info, skapa punkter med attribut, skriv till valfritt format…

…

Jaja, nu har jag i alla fall lärt mig något mer om Python. Och du som inte har tillgång till FME kan kanske använda de senaste dagarnas inlägg till något.

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Translate with Google

GBR In English
GER Auf Deutch
FRA En Français
ESP En Español
Swedish is a hard language for a machine to translate. Nuance and detail will likely be lost.
     

Bok om QGIS på Svenska

Bok

Beställ Boken/E-bok genom att klicka på bilden (även förhandsgranskning).

Senaste kommentarer

  • klakar om Laga hål i höjddata
  • Per Ekström om Laga hål i höjddata
  • Sur om Mera verktyg i QGIS
  • Anton om ”Mobile *.Geodatabase”
  • Fredrik Ekberg om Ingen är oskyldig

Arkiv

Prenumerera på Geosupportsystem

Skriv in namn och epost för att prenumerera på meddelanden från denna blogg.
Loading

geosupport

TrueNAS bygge. @fractaldesignna Define R5 är rikt TrueNAS bygge. @fractaldesignna Define R5 är riktigt trevlig att bygga i, och den sväljer väldigt mycket disk. Här skall virtualiseras både PostGis, WebODM och Geonode så småningom.
Då har jag lite att bläddra i ett tag framöver. Då har jag lite att bläddra i ett tag framöver.
YouTube video to frames. Processed in OpenDroneMap YouTube video to frames. Processed in OpenDroneMap and visualized in QGIS 3.17.
Ladda mer...

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2021 Geosupportsystem | WordPress Theme by Superbthemes.com