KML in Layer (Konvertierung)
Zusammenfassung
Konvertiert eine KML- oder KMZ-Datei in Feature-Classes und eine Layer-Datei. Die Layer-Datei übernimmt die Symbologie aus der ursprünglichen KML- oder KMZ-Datei.
Verwendung
Dieses Werkzeug erstellt eine File-Geodatabase, die eine Feature-Class innerhalb eines Feature-Datasets enthält. Der Name der Feature-Class lautet point, line, polygon oder multipatches, je nach den ursprünglichen Features der KML-Datei. Auf der gleichen Ordnerebene wie die File-Geodatabase befindet sich eine Layer-Datei (.lyr), die zu ArcMap hinzugefügt werden kann, um die Features zu zeichnen. Diese Layer-Datei zeichnet Features basierend auf ihrem Schema (Punkt, Linie oder Polygon), wobei die ursprüngliche KML-Symbologie beibehalten wird.
Jede erstellte Feature-Class weist Attribute auf, die Informationen zur ursprünglichen KML-Datei enthalten. Die ursprüngliche Ordnerstruktur, Name und Popup-Informationen sowie Felder, die definieren, wie sich Features auf einer Oberfläche befinden, bilden die Attribute eines Features.
Raster oder Bodenüberlagerungen werden in der File-Geodatabase in einen Raster-Katalog konvertiert. Das Quell-Raster in seinem systemeigenen Format ist im Ordner GroundOverlays auf derselben Ebene wie die Ausgabe-File-Geodatabase verfügbar.
Hinweis:Das Konvertieren von Überlagerungen mit dem Werkzeug KML in Layer kann je nach Quelldaten einige Zeit in Anspruch nehmen. Alle verfügbaren Raster und Überlagerungen in der KML-Datei werden konvertiert. Falls eine KML-Datei auf einen Service verweist, der Bilddaten bereitstellt, werden die gesamten Bilddaten konvertiert. Das Konvertieren von hochauflösenden Bilddaten kann aufgrund der Dateigröße länger dauern.
Die Ausgabe wird im WGS84-Koordinatensystem generiert. Falls gewünscht, können die Ausgabe-Features mit dem Werkzeug Projizieren in ein anderes Koordinatensystem neu projiziert werden.
-
Eingaben bis zu KMZ-Version 2.2 des OGC KML-Standards werden weitgehend unterstützt. Punktpositionen, die den Adress-Tag verwenden (durch Geokodierung), werden nicht unterstützt. Im Quell-KML ist eine gültige Längen- und Breitengradposition erforderlich.
Syntax
Parameter | Erläuterung | Datentyp |
in_kml_file |
Die zu übertragende KML- oder KMZ-Datei. | File |
output_folder |
Der Zielordner für die File-Geodatabase und die Layer-Datei (.lyr). | Folder |
output_data (optional) |
Der Name der Ausgabe-File-Geodatabase und der Layer-Datei (.lyr). Standardmäßig wird der Name der Eingabe-KML-Datei verwendet. | String |
include_groundoverlay (optional) | Beziehen Sie Bodenüberlagerungen (Raster, Luftaufnahmen usw.) ein. Seien Sie vorsichtig, wenn die KMZ-Datei auf einen Service verweist, der Raster-Bilddaten bereitstellt. Das Werkzeug versucht, die Raster-Bilddaten in allen verfügbaren Maßstäben zu übertragen. Dieser Prozess kann lange dauern und den Service möglicherweise überlasten.
| Boolean |
Codebeispiel
Konvertiert eine KMZ-Datei in eine FGDB im Python-Fenster.
import arcpy
arcpy.KMLToLayer_conversion(r'C:\kmls\earthquakes.kml',r'C:\gisdata\fromkmls','earthquake_09')
Mit dem folgenden Skript wird ein Ordner mit KMZ- und KML-Dateien in die entsprechende File-Geodatabase konvertiert. Die Feature-Classes in diesen File-Geodatabases werden dann zu einer einzigen File-Geodatabase konsolidiert.
Hinweis: Dieses Skript behält die Layer-Dateien aus dem Werkzeug "KML in Layer" nicht bei.
# Name: BatchKML_to_GDB.py
# Description: Converts a directory of KMLs and copies the output into a single fGDB.
# A 2 step process: first convert the KML files, and then copy the featureclases
# Import system models
import arcpy, os
# Set workspace (where all the KMLs are)
arcpy.env.workspace="C:/VancouverData/KML"
# Set local variables and location for the consolidated file geodatabase
outLocation = "C:/WorkingData/fGDBs"
MasterGDB = 'AllKMLLayers.gdb'
MasterGDBLocation = os.path.join(outLocation, MasterGDB)
# Create the master FileGeodatabase
arcpy.CreateFileGDB_management(outLocation, MasterGDB)
# Convert all KMZ and KML files found in the current workspace
for kmz in arcpy.ListFiles('*.KM*'):
print "CONVERTING: " + os.path.join(arcpy.env.workspace,kmz)
arcpy.KMLToLayer_conversion(kmz, outLocation)
# Change the workspace to fGDB location
arcpy.env.workspace = outLocation
# Loop through all the FileGeodatabases within the workspace
wks = arcpy.ListWorkspaces('*', 'FileGDB')
# Skip the Master GDB
wks.remove(MasterGDBLocation)
for fgdb in wks:
# Change the workspace to the current FileGeodatabase
arcpy.env.workspace = fgdb
# For every Featureclass inside, copy it to the Master and use the name from the original fGDB
featureClasses = arcpy.ListFeatureClasses('*', '', 'Placemarks')
for fc in featureClasses:
print "COPYING: " + fc + " FROM: " + fgdb
fcCopy = fgdb + os.sep + 'Placemarks' + os.sep + fc
arcpy.FeatureClassToFeatureClass_conversion(fcCopy, MasterGDBLocation, fgdb[fgdb.rfind(os.sep)+1:-4])
# Clean up
del kmz, wks, fc, featureClasses, fgdb