Me preguntaba si es posible mirar el contenido de un archivo de forma usando Python sin tener una licencia de ArcMap. La situación es que puede crear archivos de forma desde muchas aplicaciones diferentes, no solo desde el software ESRI. Me gustaría crear un script de Python que verifique la referencia espacial, el tipo de entidad, los nombres de atributos y las definiciones, y el contenido de los campos en un archivo shape y los compare con un conjunto de valores aceptables. Me gustaría que este script funcione incluso si la organización no tiene ninguna licencia de ESRI. Para hacer algo como esto, ¿tiene que usar ArcPy o puede excavar en un archivo de forma sin usar ArcPy?
40
Respuestas:
Recomendaría familiarizarse con la API Python GDAL / OGR para trabajar con datos vectoriales y ráster. La forma más fácil de comenzar a usar GDAL / OGR es a través de una distribución de python como python (x, y) , Anaconda u OSGeo4W .
Más detalles sobre el uso de GDAL para sus tareas específicas:
Además, recomendaría el siguiente tutorial de USU para comenzar.
Tomando prestado de los ejemplos anteriores, el siguiente script usa herramientas FOSS para realizar las siguientes acciones:
fuente
inFeature = None
. El libro de cocina de GDAL / OGR no forma parte ni está escrito por el equipo central de GDAL / OGR.Hay muchos módulos para leer shapefiles en Python, anteriores a ArcPy, mira el Python Package Index (PyPi): shapefiles . También hay muchos ejemplos en GIS SE (busque [Python] Fiona , por ejemplo)
Todos pueden leer la geometría, los campos y las proyecciones.
Pero otros módulos como PySAL: la Biblioteca de análisis espacial de Python , Cartopy (que usa pyshp ) o Matplotlib Basemap también pueden leer archivos de forma, entre otras cosas.
El más fácil de usar es Fiona , pero si solo conoce ArcPy, use pyshp , porque osgeo y Fiona requieren que se instale la biblioteca GDAL C / C ++, GeoPandas necesita el módulo Pandas y PySAL es demasiado grande (muchos, muchos otros tratamientos)
Si solo desea leer el contenido de un shapefile, no necesita cosas complejas, simplemente use el protocolo de interfaz geográfica (GeoJSON) también implementado en ArcPy ( ArcPy: AsShape )
Con Fiona (como diccionarios de Python):
Con pyshp (como diccionarios de Python)
Con osgeo / ogr (como diccionarios de Python)
Con GeoPandas (como marco de datos de Pandas)
* nota sobre geopandas Debe usar versiones anteriores de Fiona y GDAL o no se instalará. GDAL: 1.11.2 Fiona: 1.6.0 Geopandas: 0.1.0.dev-
Hay muchos tutoriales en la Web e incluso libros ( Desarrollo Geoespacial de Python , Aprendizaje del Análisis Geoespacial con Python y Geoprocesamiento con Python , en prensa)
En términos más generales, si desea usar Python sin ArcPy, consulte Mapeo temático simple de shapefile usando Python.
fuente
The kinds of data in GIS are roughly divided into rasters representing continuous scalar fields (land surface temperature or elevation, for example) and vectors representing discrete entities like roads and administrative boundaries. Fiona is concerned exclusively with the latter
Hay bibliotecas geoespaciales de Python además de ArcPy que le brindarán estas habilidades. Aquí hay dos ejemplos:
La biblioteca de archivos de forma de Python (pyshp)
GeoPandas
Si está interesado en otras bibliotecas, esta publicación sobre bibliotecas geoespaciales esenciales de Python es un buen lugar para buscar.
fuente