¿Cómo puedo convertir un archivo excel con x, y columnas a un shapefile?

25

¿Cómo puedo convertir un archivo de excel con x, y columnas en un archivo de forma de puntos?

Hay algunos requisitos opcionales además de la creación correcta de un shapefile:

  1. Los tipos de columna (según los especificadores de formato de Excel) deben mantenerse (especialmente los tipos de fecha)
  2. Los nombres de las columnas deben tomarse del encabezado
  3. Me gustaría gustar hacer esto desde la línea de comandos
  4. Si puedo incluir referencias espaciales heterogéneas para los puntos en una tercera columna, me encantaría :)
pregunta fmark 26.07.2010 - 00:39

9 respuestas

24

Recomiendo usar OGR / GDAL , que forma parte de biblioteca GDAL . OGR es compatible con un formato virtual que permite la especificación a través de un archivo XML. Si convierte su hoja de cálculo de Excel en un CSV, puede generar un VRT para acceder a los datos.

Suponiendo que tienes algo como esto example.csv :

Lat,Long,Year,Name
34.0,-120.0,2010-05-01,Off Santa Rosa Island

Puede crear un VRT example.vrt de la siguiente manera:

<OGRVRTDataSource>
    <OGRVRTLayer name="example">
        <SrcDataSource>example.csv</SrcDataSource>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField encoding="PointFromColumns" x="Long" y="Lat"/>
    </OGRVRTLayer>
</OGRVRTDataSource>

A partir de GDAL 1.7, puede especificar adicionalmente los tipos de datos de los campos de atributo utilizando el elemento <Field> dentro de <OGRVRTLayer> , de este modo:

    <Field name="date" src="Year" type="Date" />

Tenga en cuenta que los shapefiles almacenan atributos en el formato DBASE IV que tiene menos flexibilidad en los tipos de datos que Excel. Una vez que haya especificado su archivo VRT, puede usar la cadena de herramientas OGR normal para convertir los datos en un Shapefile:

ogr2ogr -f "ESRI Shapefile" example.shp example.vrt

Lamentablemente, el # 4 no es posible: la especificación de shapefile permite una única proyección (que se puede ver aquí en example.prj después del último paso).

    
respondido por el scw 26.07.2010 - 03:06
9

Puede usar el complemento de texto delimitado que viene con QGIS (http://qgis.org ) para cargar el archivo de texto y luego guardarlo como un shapefile.

    
respondido por el gsherman 26.07.2010 - 22:55
6

Busqué pero no pude encontrar una página de ayuda en Display XY Data en la ayuda web, pero el proceso es simple.

  1. Use Agregar datos (o arrastre y suelte desde la ventana Catálogo) para buscar su hoja de trabajo (dentro de la hoja de cálculo) y agregarla a su mapa
  2. Haz clic derecho para elegir y utiliza Mostrar datos XY para agregar una capa de evento
  3. Haga clic con el botón derecho en la capa de eventos que se acaba de crear y use Datos | Exportar datos para crear un shapefile

Solo necesita el nivel de licencia ArcView (Básico) de ArcGIS (para) Desktop para hacer esto.

    
respondido por el PolyGeo 23.08.2012 - 02:44
5

Aunque no se encuentra en la línea de comandos, puede hacerlo dentro de la aplicación ArcGIS. Desde 9.3.1, simplemente agregue el XLS directamente en ArcMap. Cree una capa de eventos XY desde el XLS (es decir, elija las columnas X, Y y establezca su referencia espacial) Luego exporta esta capa de eventos XY a un nuevo .shp Esto podría automatizarse fácilmente con un simple script de Python / VBA o un modelo en modelbuilder. Feliz de ayudar en este flujo de trabajo básico si necesita más información.

    
respondido por el Simon 30.07.2010 - 12:13
4

Siempre existe la opción aventurera. Usted podría escribir el archivo de forma usted mismo. ESRI publica la especificación para shapefiles, que puede leer aquí:

enlace

También deberías escribir un archivo DBF. Puedes leer sobre el formato aquí:

enlace

Sin duda, esto es una exageración, pero te dará la ventaja de tener control sobre todo el proceso.

    
respondido por el Scott Wisniewski 28.07.2010 - 02:21
2

Personalmente prefiero usar FME de Safe Software (http://www.safe.com), que no solo me permite trazar puntos a partir de valores XY, sino que también me brinda la flexibilidad de transformar las coordenadas de una proyección a otra antes. trazar, especifique el tipo de delimitador, línea de inicio (en caso de que el archivo de texto tenga información de encabezado), adjunte atributos en caso de que el archivo de texto tenga X, Y, información de atributo para los datos del punto. En caso de que desee visualizar estos datos en Google Earth, puede escribirlos en formato KML al mismo tiempo que especifica el estilo de punto KML. ~ SRG

    
respondido por el SRG 30.07.2010 - 07:55
2

Si desea realizar algún otro procesamiento en los datos x, y, puede cargar los datos en postgres, usar geomfromtext con concatenación para crear un tipo de datos de geometría y luego usar pgsql2shp para exportar a la forma. Este enfoque también le permitirá retener datos heterogéneos del sistema de referencia espacial en otra columna, que luego podría usar para convertir todos sus puntos en un sistema de referencia común dentro de la base de datos antes de exportar para dar forma. Me doy cuenta de que esto implica más pasos que ogr / gdal, pero te dará mucha más flexibilidad.

    
respondido por el John Powell 02.08.2010 - 18:47
1

¿Qué hay de cargar tus archivos CSV en spatiallite y luego usar OGR o QGIS para exportar a un shapefile?

enlace

Incluso puedes exportar desde spatialite a un shapefile directamente.

enlace

    
respondido por el TheSteve0 28.07.2010 - 01:02
0

Para una transformación más básica, puede usar el transformador replantador 2D en FME 2013. Debe indicar en qué columnas están ubicados los valores de X e Y, y luego FME transformará estos valores en, por ejemplo, un archivo de forma con puntos.
Los nombres y tipos de columnas se pueden configurar según sea necesario

    
respondido por el Freeze 17.01.2014 - 14:34

Lea otras preguntas en las etiquetas