¿Hay algún intento de reemplazar el shapefile? [cerrado]

67

Recientemente, he pasado mucho tiempo convirtiendo nombres de campo perfectamente buenos como "Porcentaje de ciudadanos de 25 años o más con un título de licenciatura o superior" en cosas como "edbchogtr" para cumplir con el límite de nombre de campo de 10 caracteres del DBF.

En otro hilo ( "Curiosidades" en la especificación técnica de Shapefile ), geospatialpython comentó que "A pesar de las fallas, rarezas y limitaciones del formato de shapefile, persiste obstinadamente en el campo de SIG y alrededor de él. Cualquier otro intento de reemplazarlo ha sido demasiado inflado para simple almacenamiento de vectores o demasiado propietario ".

Esta actividad, junto con el comentario del Sr. Lawhead, me hace preguntarme:

  • ¿alguna vez se han hecho intentos explícitos para reemplazar el archivo de forma como el omnipresente formato de almacenamiento e intercambio de datos de GIS?
  • ¿Hay algún contendiente?
  • Si ha habido formatos competitivos, ¿por qué han fallado?
  • ¿Esri se ha negado a apoyarlos, o la historia es simplemente una de inercia tecnológica?
  • Si no ha habido intentos ... ¿por qué no?

Parece que podríamos mejorar un poco para nosotros, tanto como desarrolladores y usuarios de SIG.

canisrufus
fuente
2
@Mapperz Aparte de la API de Geodatabase lanzada recientemente, no veo ninguna herramienta para escribir una geodatabase que sea gratuita. No creo que esto pueda contar como un reemplazo, excepto en la parte de ESRI del mundo.
canisrufus
2
Puede escribir y leer geodatabases (a través de API) usando GDAL gdal.org/ogr/drv_filegdb.html usando resources.arcgis.com/content/geodatabases/10.0/file-gdb-api
Mapperz
1
Me gustaría ver la API de Python para leer / escribir Geodatabase de archivos (al menos Características simples) sin licencia de ArcGIS, eso sería Abierto.
PolyGeo
2
@PolyGeo tú y todos los demás :)
Ragi Yaser Burhum
3
@celenius De gdal.org/ogr/drv_shapefile.html "Geometría: el formato Shapefile utiliza explícitamente compensaciones de 32 bits y, por lo tanto, no puede superar los 8 GB (en realidad utiliza compensaciones de 32 bits a palabras de 16 bits). Por lo tanto, no se recomienda utilizar un archivo tamaño superior a 4 GB. Atributos: el formato dbf no tiene ningún desplazamiento, por lo que puede ser arbitrariamente grande ". Por lo tanto, puede tener dbfs que son bastante grandes, pero debe tener cuidado con que su shp supere los 4 GB. Entonces estás jugando con fuego.
Ragi Yaser Burhum

Respuestas:

50

Este es un tema que siempre surge. Puede que no tenga la respuesta correcta, pero puedo darle mi opinión personal .

La razón por la que son compatibles se puede atribuir a varias características sobre ellos, así que permítanme mencionar algunas.

  • Primero, hay una especificación . Quiero decir, tengo poco más de treinta años y esto existió desde que era un adolescente. Por lo tanto, es seguro decir que esta especificación ha existido por algún tiempo. Por supuesto, hay varios otros formatos que también se publican, pero la diferencia sobre este es que ...

  • ¡Es relativamente simple! Está construido sobre el formato DBF , que en ese momento ya existía y era ampliamente compatible con varias plataformas / sistemas operativos. Ya había analizadores que podían leer la mitad de este formato (la parte DBF), por lo que facilitaba la compatibilidad con la adición adicional. Tienes una geometría? Claro, solo serialízalo y escríbelo. Estás listo. ¡Contrasta esto con una cobertura ! Intente explicar a alguien en términos simples lo que hace una limpieza de topología . No es trivial escribir una cobertura topológicamente limpia.

  • Lo más importante, creo que la razón # 1 para que los shapefiles sigan siendo populares es que son compatibles tanto en sistemas de código abierto como propietarios . ¿Qué SIG sabes que no admite archivos shape? Inaudito.

Como reemplazo, escuchamos sobre File GeoDatabases y Spatialite . Ambos formatos son muy superiores en términos de funcionalidad, flexibilidad, velocidad, etc., en comparación con Shapefiles. A su manera, tienen ciertas cosas que los hacen mejores entre sí en diferentes áreas, pero una comparación de spaceialite y FileGDB ciertamente está fuera del alcance de esta pregunta.

¿Creo que alguno de estos formatos reemplazará a Shapefiles? No en sus encarnaciones actuales .

¿Por qué?

No por un argumento tecnológico (después de todo, dije que eran superiores en ese aspecto), sino por algo más: licencias.

¿Cuáles son sus problemas?

FileGDB :

FileGDB proporciona interoperabilidad a través de la nueva API FileGDB. Sin embargo, esta API se proporciona en formato binario.por ESRI. Esto no es una especificación. Después de haber trabajado en el equipo de GeoDatabase en el pasado, puedo decirte que, al contrario de todos los teóricos de la conspiración que usan sombrero de papel de aluminio, esto no es malicioso en absoluto. Es porque las partes internas de la GeoDatabase cambian en cada versión. Publicar una especificación completa implicaría básicamente dar todos los detalles de cómo se debe mantener todo y luego documentar cuidadosamente los cambios en el formato con cada lanzamiento anual. No tiene sentido Entonces, la API FileGDB, aunque no es una especificación, abstrae todos esos pequeños cambios. ¡Y ahora se puede usar multiplataforma! Eso sí, ¡este es un gran paso adelante! Teniendo en cuenta la naturaleza conservadora de ESRI, esta es definitivamente una reacción en la dirección correcta.

Y, sin embargo, el soporte solo binario no hace feliz a nadie en el mundo del Código Abierto. ¿Cómo se aprovecha de portar algún código para decirle a otro sabor de Linux si ESRI no lo admite? No puedes Esto es lo que hace que Open Source sea poderoso, y ahora, no puede aprovechar esto. Si ESRI decide dejar de soportar Debian, eso es todo. Estás listo. Y no hay nada que puedas hacer para cambiarlo.

Spatialite :

Spatialite es impresionante porque obtiene toda la funcionalidad gratuita de SQLite . SQLite se usa en todas partes. Está en su teléfono Android, en su iPhone / iPad, en Firefox, en Google Chrome, en varios dispositivos comerciales integrados, puede continuar para siempre. Para convertirlo realmente en un Geoformat (y no solo para realizar operaciones de cuadro de límite tonto), debe aprovechar la misma biblioteca de geometría que utiliza PostGIS: GEOS . Lamentablemente, GEOS se basa en otra biblioteca de geometría aún más impresionante conocida como JTS . Todos los algoritmos en JTS son extremadamente poderosos, entonces, ¿cuál es el problema?

Bueno, JTS tiene licencia como Open Source LGPL , y LGPL es una licencia viral . JTS es LGPL, significa que GEOS es LGPL, significa spaceialite vinculado estáticamente con GEOS es LGPL. Esto apesta. ¿Por qué? Sin explicar demasiado las licencias de código abierto , puedo decirle que, por ejemplo, no puedo usar spaceialite en, por ejemplo, una aplicación de iPhone porque eso haría que toda mi aplicación de código abierto automáticamente (iOS solo permite enlaces estáticos). Cualquier tipo de licencia GPL (razonablemente) asusta a ESRI, y por lo tanto no lo tocarán con un poste de 10 pies. Por lo tanto, ArcGIS, el sistema SIG más popular del mundo, no admite (y probablemente nunca lo hará) nativa espacial. Esto lo mata automáticamente como un formato viable.

Y, por lo tanto, volvemos a los archivos de formas cutres que son compatibles en todas partes.

Actualización :

Aparentemente, mi respuesta fue lo suficientemente controvertida como para que alguien decidiera que estaba bien editar libremente y cambiar todo el significado de mi respuesta para poner su punto de vista. Por favor no hagas eso. Si no está de acuerdo conmigo, eso está completamente bien, simplemente publique su opinión en una respuesta diferente y deje que la comunidad decida. Enrollé las ediciones a mi respuesta para mostrar el significado original. Estoy agregando esta actualización en caso de que lea la respuesta editada que afirma que sqlite era un formato viable.

Ragi Yaser Burhum
fuente
El problema con SQLite / Spatialite es que no es un formato, es un motor de base de datos relacional con una biblioteca espacial encima. Si bien hace lo que hace muy bien, obliga a que los datos se almacenen de manera relacional, que no siempre es la forma más adecuada. Además, la complejidad del formato de archivo SQLite ( sqlite.org/fileformat2.html ) dificulta el acceso a los datos sin el motor SQLite y, por lo tanto, no es adecuado para ser un formato de archivo abierto y de fácil acceso para el intercambio de datos. Realmente no fue diseñado para eso.
Igor Brejc
8
En realidad, LGPL no es una licencia viral, fue diseñada específicamente para evitar esto. Además, Spatialite tiene licencia bajo la licencia MPL tri ( fuente ), lo que significa, entre otras cosas, que puede elegir la Licencia pública de Mozilla como la mejor licencia y operar bajo sus términos (muy poco copyleft). Mi lectura es que, al menos, ESRI tienen ninguna razón para no apoyar SpatiaLite debido a la licencia - si van a (dado que compite en casi el mismo espacio que FileGDB) es otra historia ...
om_henners
3
@ Ragi, mezclas usando una biblioteca y portándola . Por supuesto, la transferencia tendrá que ser LGPL, ya que esto es esencialmente un trabajo derivado. Pero si lo vincula dinámicamente, no se considera un trabajo derivado, es "un trabajo que utiliza la biblioteca" y puede conservar su licencia ( en.wikipedia.org/wiki/GNU_Lesser_General_Public_License ). Por lo tanto, decir "LGPL es viral" sin una explicación adicional no es exacto.
Igor Brejc
2
Pero de nuevo, este es un punto discutible, ya que Spatialite tiene licencia bajo un esquema con licencia de árbol ( groups.google.com/forum/?fromgroups#!topic/spatialite-users/… ), por lo que puede elegir la licencia que se adapte usted más - MPL permite la vinculación estática.
Igor Brejc
2
@ bugmenot123 Bien, luego corríjalo si lo desea, pero no me acuse de difundir FUD sobre el sistema operativo porque es insultante. He estado escribiendo el código del sistema operativo durante más de una década (no me sorprendería que haya utilizado algunos de los míos en realidad) y eso no fue una queja enojada. Era cierto, y todavía lo es. Enlace dinámico en iOS de LGPL (bueno, para ser precisos , se permitieron marcos en iOS 8). Esto nunca ha sido un problema técnico, sino legal. La distribución en la tienda de aplicaciones requiere la firma del código, y lamentablemente para todos los amantes del sistema operativo como yo, LGPL es una licencia difusa para esto. Sin precedentes en la corte.
Ragi Yaser Burhum
18

La parte SHP + SHX en sí misma no es tan mala. El verdadero problema radica en la parte DBF. Eso podría hacer con un nuevo formato, que admite unicode y todo tipo de tipos de campo modernos. El problema es conseguir que todo el software lo respalde bien.

Uffe Kousgaard
fuente
66
+1 La mejora en la parte DBF tampoco es nada difícil: realmente se reduce a persuadir a los desarrolladores de software para que estén de acuerdo en algo.
whuber
1
¿Ha habido un intento?
canisrufus
55
A menudo pido una enmienda Shapefile que simplemente sustituya un archivo CSV UTF-8 por el DBF. Sería sencillo admitir y requerir cambios mínimos en los paquetes de software existentes.
scw
1
@canis Fox Software hizo un intento menor (propietario) a finales de los años 80. Después de que MS los compró (c. 1990), eso fue todo. La comunidad creó un estándar DBF 3 y eso prácticamente congeló todo el desarrollo. MS lanzó Access; FoxPro se extinguió; El mundo siguió adelante.
whuber
1
Por el contrario, @Uffe, se puede acceder aleatoriamente a los archivos CSV: solo necesita un índice, al igual que los archivos DBF para búsquedas eficientes. El mayor problema que veo es que los cambios aparentemente menores que ocurren naturalmente en los archivos CSV, como citar cadenas o conversiones CR / LF, arruinarán todos los desplazamientos de bytes. La estructura de registro de longitud fija de un archivo DBF, aunque menos eficiente en el almacenamiento, no tiene ese problema.
whuber
7

Al menos spaceialite tiene la intención, ver, por ejemplo, esta presentación http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

Por otro lado, creo que la razón principal por la que falló es que shp está bien soportado por muchas aplicaciones y solo tiene deficiencias menores.

Otros también comparten esta opinión:

Esto no se debe a que el proyecto SpatiaLite no nos haya dado herramientas para implementar, sino que a la comunidad no le podría importar menos. SHP funciona para ellos y no hay ninguna razón para cambiar.

http://www.spatiallyadjusted.com/2010/09/16/spatialite-is-not-the-shapefile-of-the-future/

Más ideas sobre la geodatabase de archivos Esri, spaceialite y autodesk sdf aquí: http://www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto

johanvdw
fuente
Por grandioso que sea, creo que spatiaLite es ~ 3 megabytes de sobrecarga en funciones, sistemas de referencia, etc. que evitan que sea un buen formato de intercambio completo.
Scro
En realidad, la licencia de spaceialite es menos que ideal: no tiene nada que ver con las herramientas.
Ragi Yaser Burhum
@Scro, ¿3 megabytes son demasiado grandes? Ciertamente no es demasiado grande para el escritorio. Debes considerar los dispositivos móviles. Además, ¿hay otra API espacial, con una funcionalidad equivalente, en un tamaño más pequeño que Spatialite?
klewis
@klewis: no es demasiado grande per se, es muy ineficiente si se considera que hay muchos conjuntos de datos pequeños (piense <200kb). Eso es una gran carga, especialmente a la luz del hecho de que, una vez recibido, normalmente dejaría cada conjunto de datos en su archivo de 3mb, o lo incluiría en una base de datos existente. Para ser claros, yo <3 spatiaLite, pero estamos hablando de transmisión de datos, donde algún tipo de archivo plano / xml / wkb sería mucho más eficiente.
Scro
6

Esri ha estado promoviendo las geodatabases de archivos durante varios años como reemplazo de los archivos de forma.

Más recientemente, han proporcionado una API que oculta cualquier rareza.

Kirk Kuykendall
fuente
No he trabajado mucho con las geodatabases. Wikipedia dice que son un estándar "cerrado", por ejemplo, la especificación de geodatabase no ha sido publicada. Parece difícil obtener una adopción muy amplia sin publicar las partes internas del formato. Si bien soy demasiado joven para conocer la historia, creo que los archivos de forma son en parte tan populares debido a la parte pública de la especificación. La API parece un buen paso.
canisrufus
1
@canis tienes razón. En ese momento, nadie habría adoptado shapefiles, excepto que ESRI los promovió específicamente como un formato abierto de intercambio de datos SIG. Incluso con las herramientas de software limitadas disponibles en ese momento, con el lanzamiento de ESRI de una especificación clara .shp / .shx (y el compromiso de cumplirla), se convirtió en cuestión de solo unas pocas horas de trabajo escribir código para leer y leer. escribir archivos de forma: no es necesaria la ingeniería inversa.
whuber
Mientras la API sea un blob binario de recuadro negro, FGDB no verá la misma adopción que SHP. Incluso si Esri convence a todos sus clientes de cambiar a FGDB desde SHP, la API no es realmente compatible con el código abierto.
dericke
3

Un dialecto XML, como GML, definitivamente no está optimizado para operar grandes conjuntos de datos, pero puede usarse como un formato de intercambio entre software o entre plataformas.

No creo que haya ningún problema con la licencia (consulte la publicación de Ragi Yaser Burhum sobre las características virales de Spatialite) y es bastante fácil adaptar los analizadores existentes si es necesario.

Stéphane Henriod
fuente
1
Creo que no se ha mencionado solo por la razón por la que está mencionando, que no está optimizado para grandes conjuntos de datos. XML está hinchado. Los formatos mencionados aquí son binarios, donde GML almacena puntos como cadenas. El tamaño puede superar un orden de magnitud diferente.
canisrufus
3
Canisrufus tiene razón. Hay varios problemas con GML. Se puede navegar el Infoset usando XPath, pero cualquiera que haya intentado implementar la indexación espacial sobre XML le dirá cuán irracional es y cuán mal se asigna a las bases de datos relacionales tradicionales. Sin entrar en muchos detalles, si algo tan básico como la indexación y la consulta no se vuelve trivial, el formato está hinchado y, básicamente, requiere que tenga todo el conjunto de datos en la memoria para hacer algo con él, entonces esta no es una buena opción.
Ragi Yaser Burhum
44
xml se hincha cuando se almacena como texto sin formato. Hay librerías binarias xml disponibles, gratuitas y gratuitas para modificar y redistribuir, que pueden servir como reemplazos directos para los lectores xml, dando a las personas la libertad de utilizar tanto la legibilidad humana de xml como el rendimiento y la eficiencia de almacenamiento de binary . La única razón por la que puedo pensar para que nunca se aborde en gran medida es como observa johandvw arriba : a nadie le importa, .shp ha sido "lo suficientemente bueno" como es.
Matt Wilkie
1

Solo para llegar a esto desde una perspectiva diferente, no estoy seguro de que el uso de "Porcentaje de ciudadanos de 25 años o más con un título de licenciatura o superior" sea ​​un nombre de campo perfectamente bueno. Si bien se pueden manejar espacios de mezcla y apóstrofes, si está escribiendo código o consultas, es más probable que presente errores.

En mi opinión, el futuro de la distribución de datos espaciales debería centrarse en la web y los servicios web, y la especificación WFS (que usa GML) está abierta y establecida. GeoJSON es más pequeño y puede ser más fácil trabajar con él en JavaScript. Sin embargo, con la compresión, los tamaños son comparables.

También me gustaría votar por las geodatabases personales de ESRI . Puede ser un formato de Microsoft a menudo difamado, pero admite ODBC, consultas SQL, vistas y permite a los no desarrolladores crear formularios de entrada de datos fáciles, e incluye al menos algún nivel de comprobaciones de integridad de datos (tipos de datos, longitudes, valores únicos) .

geographika
fuente
Ese es un punto válido. Lo bueno de ellos es que, dado el conocimiento del idioma inglés, uno puede descubrir qué significan los campos.
canisrufus
Sin embargo, esa es realmente la función de los metadatos de los conjuntos de datos. El shapefile puede usar un archivo XML con el mismo nombre para almacenar esto.
geographika