Schreiben einer Weltdatei beim Exportieren von TIFF mithilfe von ArcPy Mapping?

8

Laut Dokumentation stehen folgende Optionen zur Verfügung: Syntax

ExportToTIFF (map_document, out_tiff, {data_frame}, {df_export_width}, {df_export_height}, {Auflösung}, {world_file}, {color_mode}, {tiff_compression}, {geoTIFF_tags})

Dies funktioniert jedoch:

import arcpy.mapping
mxd = arcpy.mapping.MapDocument("CURRENT")
arcpy.mapping.ListDataFrames(mxd)
arcpy.mapping.ExportToTIFF(mxd,r"D:\out2.tif","PAGE_LAYOUT",640,480,96)

aber dieses:

arcpy.mapping.ExportToTIFF(mxd,r"D:\out2.tif","PAGE_LAYOUT",640,480,96,True)

Ausbeuten: Runtime error <type 'exceptions.TypeError'>: PageLayoutObject: Error in executing ExportToTIFF

Mache ich etwas falsch mit diesem Booleschen Wert für world_file?

DanDye
quelle

Antworten:

11

Ich glaube, die World-Dateioption ist nur verfügbar, wenn Sie aus einem Datenrahmen exportieren, nicht aus dem Seitenlayout.

Vom Exportieren Ihrer Karte

TIFF-spezifische Optionen

Das TIFF-Dateiformat bietet zusätzlich die Möglichkeit, Georeferenzierungsinformationen intern zu speichern. Dies ist ein GeoTIFF. Um ein GeoTIFF zu erstellen, klicken Sie auf den Dropdown-Pfeil Dateityp und dann auf TIFF. Klicken Sie auf den Pfeil Optionen, um die Optionen zu erweitern. Klicken Sie dann auf die Registerkarte Format und aktivieren Sie GeoTIFF-Tags schreiben. Diese Option ist nur verfügbar, wenn Sie in der Datenansicht exportieren .

Während sich diese Informationen auf den Export von der Benutzeroberfläche beziehen, gilt dieselbe Logik wahrscheinlich für ArcPy.

Ich habe dies gerade getestet und die Option "Weltdatei" funktioniert mit einem Datenrahmen, während "PAGE_LAYOUT" einen Fehler ausgibt. Dies ist sinnvoll, da das Seitenlayout in Seitenkoordinaten (dh (0,0) bis (Seitenbreite, Seitenhöhe)) und nicht in realen Koordinaten angegeben ist.

Achtung , dieses Tool funktioniert nicht wie erwartet. (Ich verwende ArcGIS Desktop 10.0 SP1). Wenn die angegebene Bildgröße nicht das gleiche Seitenverhältnis wie der Datenrahmen hat, wird ein nicht sichtbarer Teil des Datenrahmens exportiert, um das Bild zu füllen. Die x- und y-Pixel-Skalierung in der Weltdatei basiert jedoch auf den Ausmaßen des gezeigten Datenrahmens und ist nicht für das Bild erweitert.

Wenn Sie das UI-Tool (Datei-> Karte exportieren ...) verwenden, werden Sie feststellen, dass die Bildgröße auf das Seitenverhältnis des Datenrahmens voreingestellt ist und Sie die Bildgröße nur durch Ändern der Bildauflösung ändern können.

Eine Problemumgehung besteht darin, die Ausmaße des Datenrahmens abzurufen und dann das entsprechende Bildseitenverhältnis zu berechnen. Wie so:

import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
ar = df.extent.height / df.extent.width
arcpy.mapping.ExportToTIFF(mxd,r"C:\out.tif",df,1024,1024*ar,96,True)
Regan Sarwas
quelle
nur aus einem
Datenrahmen
0

Ich glaube, was Sie suchen, ist: mxd.pageSize.height * (Konvertierungsfaktor * DPI)

Sie können convert_factor * DPI zu einer Konstanten kombinieren oder sie getrennt halten und zwischen den Einheiten konvertieren, die im Abschnitt Kartenseitengröße des Fensters Seite und Druckeinrichtung angegeben sind.

Joseph Armbruster
quelle
0

Lassen Sie ExportToTIFF einen Geotiff erstellen. Verwenden Sie dann ExportRasterWorldFile_management (Eigenschaften data_management \ raster \ raster), um die Weltdatei zu generieren. Dieses Tool ist auf allen Lizenzstufen gültig.

klewis
quelle