Več

Izdvajanje informacij iz svetovne datoteke slik v kataloško datoteko DBF prek ArcPy


Tu je na tisoče slik v formatu JPG ali TIF s svetovnimi datotekami, kot sta jgw in tfw. V vsaki datoteki so bile informacije o projekciji za posamezne slike. Primer vsebine tipične datoteke TFW je prikazan spodaj:

0.17605 0.00000 0.00000 -0.17605 -57782.10446 -18285.74039

Kako ga lahko prenesem v DBF prek ArcPy?

Želim narediti kataloško datoteko za prikaz na ArcGIS.


Poskusite skript spodaj. Je zelo star (2008) - eden mojih prvih Pythonovih skriptov, sploh ni eleganten in ga je mogoče znova napisati z delčkom kode. Deluje, zato se nikoli ni potrudil, da ga obnovite.

Skript ima za vhod 4 parametre. Upam, da veste, kako določiti parametre skripta v pogovornem oknu s parametri.

  1. outputFolder - mapa, kamor bo shranjen katalog slik na osnovi tabele. Tip - mapa, izhod,
  2. outputTable - ime izhodne tabele dBase, niz parametrov, npr. imcat.dbf. Smer - vnos. Shranjeno bo v outputFolder. Vaš katalog bo prikazan v ArcGIS.
  3. postavitevTabela - postavitev dBase tabele s 5 stolpci: IMAGE, XMIN, YMIN, XMAX, YMAX. Prvo polje je niz (dolg 250), ostalo pa dvojice. Da, uporabnik mora najprej ustvariti to tabelo. To sem naredil enkrat in to orodje sem uporabil neštetokrat, s kazalcem na isto tabelo postavitve.
  4. inRasters - vhodni raster, tip rasterskega nabora podatkov, več vnosov. Uporabite ArcCatalog, da nanj povlečete in spustite več slik.

Nekateri rastri ne uporabljajo svetovnih datotek, orodje z njimi lepo ravna /

import arcgisscripting, sys, os import traceback try: gp = arcgisscripting.create () # izhodna mapa za shranjevanje tabele outputFolder = gp.GetParameterAsText (0) # ime tabele outputTable = gp.GetParameterAsText (1) # predlogo tabele ime layoutTable = gp .GetParameterAsText (2) inRasters = gp.GetParameterAsText (3) # Seznam je razdeljen s podpičji ";" inLayers = inRasters.split (";") gp.CreateTable_management (outputFolder, outputTable, layoutTable, "") repl = os.sep + os.sep inRows = gp.insertcursor (outputFolder + os.sep + outputTable) za inRaster in inLayers : theR = inRaster.strip ("'") theR = theR.replace (os.sep, repl) desc = gp.Opišite (theR) theCoords = desc.extent theCoords = theCoords.split ("") xMin = float (theCoords [0]) xMax = float (theCoords [2]) yMin = float (theCoords [1]) yMax = float (theCoords [3]) inRow = inRows.newrow () inRow.IMAGE = inRaster.strip ("'") inRow.XMIN = xMin inRow.YMIN = yMin inRow.XMAX = xMax inRow.YMAX = yMax inRows.insertrow (inRow) gp.ADDMESSAGE (inRaster + "… obdelano") del inRows del inRow gp.delete print "Done" razen: # dobite objekt sledenja tb = sys.exc_info () [2] # tbinfo vsebuje številko vrstice, pri kateri koda ni uspela, in # kodo iz te vrstice tbinfo = traceback.format_tb (tb) [0] # združite informacije o napaka v # sporočilnem nizu pymsg = "NAPAKE PYTHON:  nInformacije o sledenju:  n" + tbinfo + " nInformacije o napaki:  n" +  str (sys.exc_type) + ":" + str (sys.exc_value) + " n" # Ustvari niz sporočil za morebitne napake orodja za geoprocesiranje msgs = "GEOPROCESSOR ERRORS:  n "+ gp.GetMessages (2) +"  n "# Vrnite gp sporočila za uporabo z orodjem za skripte gp.AddError (msgs) print msgs gp.AddError (pymsg) print pymsg


Poglej si posnetek: За осећајне људе које су духовно повредили њихови ближњи (Oktober 2021).