Alternativas a los Shapefiles como tipos de conjuntos de datos multiplataforma de código abierto [cerrado]

18

Estoy trabajando en un software que está muy orientado a ESRI, pero es probable que una versión futura no use el software de ESRI. Utiliza shapefiles y geodatabases. Estoy planeando llevar todos mis datos a Shapefiles en anticipación para futuras versiones del software que probablemente estarán en Android y otros dispositivos móviles. Parece que los Shapefiles son el tipo de datos más común para las características en el mundo de SIG de código abierto, pero ¿cuáles son los otros y qué beneficios aportan? Estoy familiarizado con GeoJSON y KML, pero estoy seguro de que hay otros.

Me gustaría conocer todas las opciones, pero estoy particularmente interesado en los tipos de conjuntos de datos más adecuados para almacenar en dispositivos móviles (los datos deben ser accesibles sin una conexión a Internet).

    
pregunta Tanner 22.12.2011 - 03:16

7 respuestas

18

Como dice @ user890, esto depende mucho de cómo se utilizarán los datos. Principalmente hay dos formas de acceder a los datos:

  1. Al cargarlo todo en la memoria de una sola vez y luego acceder / consultar los datos en memoria.
  2. Al consultar características específicas, cuadros delimitadores, etc.

Los formatos como GeoJSON y KML son los más adecuados para los casos en los que desea cargar todo de una vez. Los beneficios son que los datos se pueden estructurar de una manera más adecuada para su aplicación. Las desventajas: los tamaños de archivo más grandes (ya que están basados en texto) y la incapacidad de realizar consultas eficientes directamente desde el archivo.

SQLite / Spatialite es mejor para consultas (SQL), pero es más difícil estructurar los datos: tiene que aplanar todo en las tablas de la base de datos y luego hacer JOIN (lo que puede ser costoso) al realizar consultas.

Realmente no hay un formato de archivo perfecto que abarque todos (pero, de nuevo, los shapefiles están lejos de ser perfectos). Una alternativa a considerar es rodar su propio formato específico de la aplicación, pero esto solo funciona si no necesita compartir los datos con el mundo exterior.

    
respondido por el Igor Brejc 22.12.2011 - 07:39
14

Creo que la Lista de formatos vectoriales OGR (enlace actualizado) identifica casi todos los formatos de código abierto que he escuchado , y muchos muchos mas. Cada uno de esos formatos tiene sus propias ventajas / desventajas, por lo que es difícil decir cuál es el "mejor". Para las aplicaciones móviles, imagino que el tamaño del archivo será uno de los factores decisivos más importantes.

Para aplicaciones móviles, creo que comenzar con el formato sqlite / spatialite sería el formato lógico. Sé que Android proporciona soporte nativo para sqlite. Entonces, asumiendo que puedes cargar las extensiones de espacio espacial, tendrás a tu disposición un gis muy poderoso.

Dependiendo de lo aventurero que sea, parecería que crear gdal para Android no es imposible. Posiblemente podría tener muchos más formatos a su disposición. Estoy seguro de que a muchos usuarios de este sitio les interesaría si siguieras esta ruta.

    
respondido por el user890 22.12.2011 - 04:07
11

Un nuevo formato que se ha producido recientemente es el Geopackage . Esta especificación se basa en la base de datos SQLite, por lo que tiene la misma base de archivo único, pero con el beneficio adicional de ser un OGC estándar.
En cuanto al tamaño del archivo, es probable que el formato de almacenamiento sea más compacto que el formato .shp y .dbf para los datos espaciales y de atributos utilizados en el Shapefile. Por lo tanto, es probable que el GeoPackage sea del mismo tamaño, o más pequeño, que la totalidad de las mismas características en un shapefile.
Esta foto muestra una red de alcantarillado en San Diego guardada como Shapefile y GeoPackage. Como puedes ver, son esencialmente del mismo tamaño.
Dado que este formato se basa en SQLite, debe estar listo para dispositivos móviles. Muchas aplicaciones ya utilizan este formato de base de datos para el almacenamiento, por lo que es una tecnología probada. Se puede usar multiplataforma sin necesidad de traducción.

    
respondido por el Get Spatial 05.05.2017 - 19:38
4

De acuerdo con Lennert, elija el formato correcto para el trabajo.

Sin embargo, he encontrado que Spatialite es un formato bastante versátil. Usted tiene el único archivo que le da la flexibilidad de almacenar y compartir datos como un shapefile, pero niega los problemas que menciona con los límites de caracteres; mientras le da la oportunidad de explotar los beneficios de una base de datos espacial.

Lamentablemente no está totalmente soportado en ArcGIS (no lo he intentado en poco tiempo, así que podría estar equivocado), pero funciona muy bien en QGIS.

    
respondido por el Liam G 20.10.2017 - 00:09
4

Hay muchos formatos diferentes y el mejor depende de los datos que tengas, las herramientas que uses y las cosas que quieras hacer con ellos.

Algunos de los que uso:

  • Geodatabase de archivos & bases de datos spatialite: Un catchall que me gusta usar. Puede contener todo tipo de datos y tener relaciones, indexación ... Uso gdb cuando trabajo en un entorno Esri, espacio espacial para cualquier otra cosa.

  • GeoJson: formato fácil de leer que generalmente uso para conjuntos de datos pequeños que no requieren mucho en la forma de indexación

  • Bases de datos adecuadas: tiendo a usar esto para conjuntos de datos masivos y algoritmos complejos.

Pero también hay muchos otros.

    
respondido por el Lennert De Feyter 19.10.2017 - 23:46
3

Recomendaría el uso de la base de datos SQLite / spatiallite. Es un archivo único como geodatabase (de una a muchas tablas / capas dentro) y se puede usar en ArcGIS Desktop y QGIS.

    
respondido por el artwork21 04.05.2017 - 20:21
1

Las opciones realmente dependen del idioma que usará y de cómo se utilizarán los datos. Android probablemente será Java. Cada opción será un tipo de comparación costo / beneficio basada en esa decisión. Todos los formatos de datos están optimizados para ciertos casos de uso.

La siguiente pregunta es cómo se utilizarán los datos. ¿La aplicación móvil solo leerá datos espaciales? ¿O será leer y escribir datos con frecuencia? ¿Con qué frecuencia intercambiará datos con otros dispositivos o servidores?

    
respondido por el GeospatialPython.com 22.12.2011 - 16:45

Lea otras preguntas en las etiquetas