Y a-t-il des tentatives pour remplacer le fichier de formes? [fermé]

67

Récemment, j'ai passé beaucoup de temps à convertir des noms de champs parfaitement bons, tels que "Pourcentage de citoyens âgés de 25 ans et plus titulaires d'un baccalauréat ou supérieur", en éléments comme "edbchogtr" afin de respecter la limite de 10 noms de champs du DBF.

Dans un autre fil ( "Curiosités" dans la spécification technique de Shapefile ), geospatialpython a déclaré: "Malgré les défauts, les bizarreries et les limitations du format de fichier de formes, il persiste obstinément dans et autour du domaine des SIG. Toute tentative de remplacement a été trop compliquée stockage vectoriel simple ou trop propriétaire. "

Cette activité, associée au commentaire de M. Lawhead, m'interroge:

  • Des tentatives explicites ont-elles déjà été faites pour remplacer le fichier de formes en tant que format de stockage et d'échange de données omniprésent dans les SIG?
  • Y a-t-il des prétendants?
  • S'il y a eu des formats concurrents, pourquoi ont-ils échoué?
  • Esri a-t-il refusé de les soutenir ou s'agit-il simplement d'une histoire d'inertie technologique?
  • S'il n'y a pas eu de tentatives ... pourquoi pas?

Il semble que nous pourrions faire un peu mieux pour nous-mêmes, en tant que développeurs et utilisateurs de SIG.

canisrufus
la source
2
@Mapperz À part la nouvelle API de géodatabase récemment publiée, je ne vois aucun outil gratuit pour écrire une géodatabase. Je ne pense pas que cela pourrait compter comme remplacement, sauf dans la partie du monde d'ESRI.
Canisrufus
2
Vous pouvez écrire et lire des géodatabases (via l'API) à l'aide de GDAL à l'aide de GDAL à l' adresse gdal.org/ogr/drv_filegdb.html à l' aide de resources.arcgis.com/content/geodatabases/10.0/file-gdb-api
Mapperz
1
Aimeriez voir l'API Python lire / écrire une géodatabase Fichier (au moins Simple Features) sans licence ArcGIS - ce serait Open.
PolyGeo
2
@PolyGeo vous et tout le monde :)
Ragi Yaser Burhum Le
3
@celenius De gdal.org/ogr/drv_shapefile.html "Géométrie: le format Shapefile utilise explicitement les décalages de 32 bits et ne peut donc pas dépasser 8 Go (il utilise en fait des décalages de 32 bits à des mots de 16 bits). Il n'est donc pas recommandé d'utiliser un fichier. taille supérieure à 4 Go. Attributs: le format dbf ne contient aucun décalage, il peut donc être arbitrairement volumineux. " Donc, vous pouvez avoir des dbfs assez gros, mais vous devez faire attention à ce que votre shp dépasse 4 Go. Ensuite, vous jouez avec le feu.
Ragi Yaser Burhum

Réponses:

50

C'est un sujet qui revient toujours. Je n'ai peut-être pas la bonne réponse, mais je peux vous donner mon opinion personnelle .

La raison pour laquelle ils sont pris en charge peut être attribuée à plusieurs caractéristiques les concernant, alors laissez-moi en mentionner quelques-uns.

  • Premièrement, il y a une spécification . Je veux dire, je suis au début de la trentaine et cette chose existait depuis mon adolescence. Donc, il est prudent de dire que cette spécification a été autour depuis un certain temps. Bien sûr, plusieurs autres formats sont également publiés, mais la différence avec celui-ci est que ...

  • C'est relativement simple! Il s’appuie sur le format DBF , qui existait déjà et qui était largement pris en charge par plusieurs plates-formes / systèmes d’exploitation. Il y avait déjà des analyseurs capables de lire la moitié de ce format (la partie DBF), ce qui facilitait la prise en charge de l'ajout supplémentaire. Vous avez une géométrie? Bien sûr, il suffit de le sérialiser et de l'écrire. Vous avez terminé. Comparez cela avec une couverture ! Essayez d'expliquer à quelqu'un, en termes simples, ce que fait un nettoyage de topologie . Il n’est pas anodin d’écrire une couverture topologiquement propre.

  • Plus important encore, je pense que la raison n ° 1 pour que les fichiers de formes soient toujours populaires est qu'ils sont pris en charge dans les systèmes Open Source et propriétaires . Que savez-vous des SIG qui ne prennent pas en charge les fichiers de formes?!? Du jamais vu.

En remplacement, nous entendons parler de File GeoDatabases and Spatialite . Les deux formats sont nettement supérieurs en termes de fonctionnalité, de flexibilité, de rapidité, etc. par rapport aux Shapefiles. À leur manière, ils ont certaines choses qui les rendent meilleurs les uns des autres dans différents domaines, mais une comparaison de spatialite et FileGDB est certainement hors du champ de cette question.

Est-ce que je pense que l'un ou l'autre de ces formats remplacera Shapefiles? Pas dans leurs incarnations actuelles .

Pourquoi?

Pas à cause d'un argument technologique (j'ai dit qu'ils étaient supérieurs à cet égard après tout), mais à cause d'autre chose: les licences.

Alors quels sont leurs problèmes?

FileGDB :

FileGDB offre une interopérabilité via la nouvelle API FileGDB. Néanmoins, cette API est fournie au format binairepar ESRI. Ce n'est pas une spécification. Ayant travaillé dans l’équipe GéoDatabase dans le passé, je peux vous affirmer que, contrairement à tous les théoriciens du complot qui portent le chapeau en étain, ce n’est pas du tout malicieux. C'est parce que les éléments internes de la GeoDatabase changent à chaque version. Publier une spécification complète impliquerait essentiellement de donner tous les détails sur la manière dont tout est censé être maintenu, puis de documenter soigneusement les modifications apportées au format avec chaque publication annuelle. Cela n'a pas de sens. Ainsi, l’API FileGDB, même s’il ne s’agit pas d’une spécification, résume toutes ces petites modifications. Et maintenant, il peut être utilisé sur plusieurs plates-formes! Attention, c'est un énorme pas en avant! Compte tenu de la nature conservatrice d'ESRI, il s'agit clairement d'une réaction dans la bonne direction.

Et pourtant, le support uniquement binaire ne rend vraiment heureux personne dans le monde de l'Open Source. Comment tirer parti du portage de code pour indiquer une autre version de Linux si ESRI ne le prend pas en charge. Tu ne peux pas. C'est ce qui rend Open Source puissant, et maintenant, vous ne pouvez pas en tirer parti. Si ESRI décide de ne plus supporter Debian, c'est tout. Vous avez terminé. Et vous ne pouvez rien faire pour le changer.

Spatialite :

Spatialite est génial car il tire toute la fonctionnalité gratuite de SQLite . SQLite est utilisé partout. Il se trouve sur votre Android Phone, sur votre iPhone / iPad, sur Firefox, sur Google Chrome, sur plusieurs appareils embarqués commerciaux - peut durer éternellement. Pour en faire vraiment un Geoformat (et pas seulement des opérations d'encadrement muettes), il doit exploiter la même bibliothèque de géométries que celle utilisée par PostGIS: GEOS . Malheureusement, GEOS est basé sur une autre bibliothèque de géométrie encore plus impressionnante appelée JTS . Tous les algorithmes dans JTS sont extrêmement puissants, alors quel est le problème?

Eh bien, JTS est sous licence Open Source LGPL , et LGPL est une licence virale . JTS est LGPL, signifie GEOS est LGPL, signifie spatialite liée statiquement à GEOS est LGPL. Ça craint. Pourquoi? Sans trop expliquer les licences open source , je peux vous affirmer que, par exemple, je ne peux pas utiliser spatialite sur une application iPhone, par exemple, car l'application entière serait automatiquement ouverte (iOS n'autorisant que les liens statiques). N'importe quel type de licence GPL effraie (raisonnablement) la merde d'ESRI, et ils ne la toucheront donc pas avec une perche de 10 pieds. Ainsi, ArcGIS, le système SIG le plus populaire au monde, ne supporte pas (et ne pourra probablement jamais) prendre en charge de manière native les spatialites. Cela le tue automatiquement en tant que format viable.

Et ainsi nous retournons aux fichiers de formes de merde qui sont supportés partout.

Mise à jour :

Apparemment, ma réponse était suffisamment controversée pour que quelqu'un décide qu'il était correct de modifier et de modifier librement le sens de ma réponse afin d'exprimer son point de vue. S'il vous plaît ne faites pas ça. Si vous n'êtes pas d'accord avec moi, c'est très bien, postez simplement votre opinion dans une réponse différente et laissez la communauté décider. J'ai annulé les modifications apportées à ma réponse pour montrer le sens original. J'ajoute cette mise à jour au cas où vous lisiez la réponse modifiée qui affirmait que SQLite était un format viable.

Ragi Yaser Burhum
la source
Le problème avec SQLite / Spatialite est que ce n'est pas un format, mais un moteur de base de données relationnelle avec une bibliothèque spatiale en plus. Bien qu’il fasse ce qu’il fait très bien, il oblige les données à être stockées de manière relationnelle, ce qui n’est pas toujours le moyen le plus approprié. De plus, la complexité du format de fichier SQLite ( sqlite.org/fileformat2.html ) rend difficile l'accès aux données sans le moteur SQLite et ne convient donc pas pour être un format de fichier ouvert et facilement accessible pour l'échange de données. Ce n'était pas vraiment conçu pour ça.
Igor Brejc
8
En fait, la LGPL n'est pas une licence virale - elle a été spécialement conçue pour éviter cela. De plus, Spatialite est sous licence MPL tri License ( source ), ce qui signifie notamment que vous pouvez choisir la licence publique Mozilla en tant que licence la plus adaptée et opérer sous ses conditions (très faible copyleft). D'après ce que je comprends au moins, ESRI n'a aucune raison de ne pas soutenir Spatialite à cause de la licence. S'ils le feront (s'ils sont en concurrence presque dans le même espace que FileGDB), c'est une autre histoire ...
om_henners
3
@Ragi, vous mélangez en utilisant une bibliothèque et en la portant . Bien sûr, le portage devra être LGPL, puisqu'il s'agit essentiellement d'un travail dérivé. Mais si vous le liez de manière dynamique, ce n'est pas considéré comme un travail dérivé, c'est "un travail qui utilise la bibliothèque" et vous gardez votre licence ( en.wikipedia.org/wiki/GNU_Lesser_General_Public_License ). Donc, dire "LGPL est virale" sans explication supplémentaire n’est pas exact.
Igor Brejc
2
Mais là encore, il s’agit d’un point discutable, car Spatialite est sous licence selon un schéma sous licence d’arborescence ( groups.google.com/forum/?fromgroups#!topic/spatialite-users/… ), vous pouvez donc choisir la licence qui vous convient. vous le plus - MPL permet la liaison statique.
Igor Brejc
2
@ bugmenot123 Bien, corrigez-le si vous le souhaitez, mais ne m'accusez pas de propager FUD à propos de l'OS, car il est insultant. J'écris du code OS depuis plus d'une décennie (je ne serais pas surpris que vous ayez utilisé certains des miens en fait) et ce n'était pas un coup de gueule énervé. C'était vrai - et ça l'est toujours. La liaison dynamique dans iOS de LGPL (pour être précis, les frameworks étaient autorisés dans iOS 8). Cela n'a jamais été un problème technique, mais juridique. La distribution dans l'Appstore nécessite la signature de code - et malheureusement pour tous les amateurs de système d'exploitation comme moi - LGPL est une licence floue pour cela. Aucun précédent au tribunal.
Ragi Yaser Burhum
18

La partie SHP + SHX n’est pas si mauvaise en soi. Le vrai problème réside dans la partie DBF. Cela pourrait se faire avec un nouveau format, qui prend en charge l’unicode et toutes sortes de types de champs modernes. Le problème, c’est que tous les logiciels sont bien supportés.

Uffe Kousgaard
la source
6
+1 Améliorer la partie DBF n'est pas du tout difficile non plus: cela revient en réalité à persuader les développeurs de logiciels de s'entendre sur quelque chose.
whuber
1
Y a-t-il eu une tentative?
Canisrufus
5
J'ai souvent recherché une modification de Shapefile qui substituerait simplement un fichier CSV UTF-8 au DBF. Il serait simple à prendre en charge et nécessiterait des modifications minimales des progiciels existants.
scw
1
@canis Fox Software a fait une petite tentative (propriétaire) à la fin des années 80. Après que MS les ait achetés (c. 1990), c’était ça. La communauté a créé un standard DBF 3 et cela a pratiquement gelé tout développement. MS a publié Access; FoxPro s'est éteint; le monde a évolué.
whuber
1
Au contraire, @Uffe, les fichiers CSV peuvent être consultés de manière aléatoire: vous n'avez besoin que d'un index, comme le font les fichiers DBF pour des recherches efficaces. Le plus gros problème que je vois est que des modifications apparemment mineures qui se produisent naturellement dans les fichiers CSV, telles que les citations de chaînes ou les conversions CR / LF, vont gâcher tous les décalages d'octets. La structure d'enregistrement de longueur fixe d'un fichier DBF, bien que moins efficace en stockage, ne pose pas ce problème.
whuber
7

Au moins spatialite a l'intention, voir par exemple cette présentation http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

D'autre part, je crois que la raison principale de son échec est que shp est bien pris en charge par de nombreuses applications et ne présente que des lacunes mineures.

D'autres partagent également cette opinion:

Ce n'est pas parce que le projet SpatiaLite ne nous a pas donné d'outils à mettre en œuvre, mais que la communauté s'en moque. SHP fonctionne pour eux et il n'y a aucune raison de changer.

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

Plus de réflexions sur la géodatabase fichier, la spatialite et le fichier autodesk sdf, ici: http://www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto

johanvdw
la source
Aussi génial que je puisse penser de spatiaLite, c'est environ 3 mégaoctets de temps système dans les fonctions, les systèmes de référence, etc. qui l'empêchent d'être un bon format d'échange complet.
Scro
En fait, la licence de spatialite n’est pas idéale, elle n’a rien à voir avec les outils.
Ragi Yaser Burhum
@Scro, 3 mégaoctets est trop gros? Ce n'est certainement pas trop gros pour le bureau. Vous devez considérer les appareils mobiles. De plus, existe-t-il une autre API Spatial, avec des fonctionnalités équivalentes, de taille inférieure à Spatialite?
Klewis
@klewis - ce n'est pas très gros en soi, c'est très inefficace quand on considère qu'il y a beaucoup de petits ensembles de données (pensez à moins de 200 Ko). Cela représente beaucoup de travail supplémentaire, notamment à la lumière du fait que, une fois reçus, vous laisseriez généralement chaque jeu de données dans son fichier de 3 Mo ou le transférez dans une base de données existante. Pour être clair, je <3 spatiaLite - mais nous parlons de transmission de données, où une sorte de fichier plat / xml / wkb serait beaucoup plus efficace.
Scro
6

Esri fait la promotion des géodatabases Fichier depuis plusieurs années en remplacement des fichiers de formes.

Plus récemment, ils ont fourni une API qui cache toutes les bizarreries.

Kirk Kuykendall
la source
Je n'ai pas beaucoup travaillé avec les géodatabases. Wikipedia dit qu'ils sont une norme "fermée", par exemple, les spécifications de la géodatabase n'ont pas été publiées. Il semble difficile d’obtenir une adoption très large sans publier les éléments internes du format. Bien que je sois trop jeune pour connaître l’histoire, j’imagine que les fichiers de formes sont en partie si populaires en raison de la partie publique de la spécification. L'API semble être une bonne étape.
Canisrufus
1
@canis vous avez raison. À l'époque, personne n'aurait adopté de fichiers de formes, à moins qu'ESRI les ait spécifiquement promues comme format d'échange de données SIG ouvert. Même avec les outils logiciels limités disponibles à l'époque, avec la publication par ESRI d'une spécification claire .shp / .shx (et l'engagement de s'y tenir), il ne suffisait que de quelques heures pour écrire du code à lire et écrire des shapefiles: pas de reverse engineering nécessaire.
whuber
Tant que l'API est un blob binaire de type boîte noire, FGDB ne verra pas la même adoption que SHP. Même si Esri convainc tous ses clients de passer de SHP à la FGDB, l'API n'est pas vraiment compatible avec l'open source.
dericke
3

Un dialecte XML, tel que GML, n'est certainement pas optimisé pour exploiter d'énormes ensembles de données, mais peut être utilisé comme format d'échange entre logiciels ou entre plates-formes.

Je ne crois pas que les licences posent problème (voir l'article de Ragi Yaser Burhum sur les caractéristiques virales de Spatialite) et qu'il est assez facile d'adapter les analyseurs syntaxiques existants si nécessaire.

Stéphane Henriod
la source
1
Je pense que cela n'a pas été mentionné pour la seule raison que vous avez évoquée, à savoir que ce n'est pas optimisé pour les grands ensembles de données. XML est gonflé. Les formats mentionnés ici sont binaires, où GML stocke les points sous forme de chaînes. La taille peut être différente d'un ordre de grandeur.
Canisrufus
3
Canisrufus a raison. Il y a plusieurs problèmes avec GML. Il est possible de naviguer dans l’infoset à l’aide de XPath, mais toute personne ayant tenté de mettre en œuvre une indexation spatiale au-dessus de XML vous dira à quel point cela est irrationnel et à quel point il correspond aux bases de données relationnelles traditionnelles. Sans entrer dans de nombreux détails, si quelque chose d'aussi fondamental que l'indexation et l'interrogation ne deviennent pas triviaux, le format est gonflé et si, fondamentalement, vous devez disposer de l'intégralité du jeu de données en mémoire pour l'utiliser, alors ce n'est pas une bonne option.
Ragi Yaser Burhum
4
XML est gonflé lorsqu'il est stocké en tant que texte brut. Il existe librement (à la fois gratuitement et librement de modifier et de redistribuer) des bibliothèques XML binaires disponibles qui peuvent servir de remplacement instantané aux lecteurs xml, ce qui donne aux utilisateurs la liberté d'utiliser à la fois la lisibilité humaine de xml et les performances de stockage binaire. . La seule raison pour laquelle je peux penser à ce qu'il ne soit jamais utilisé de manière importante est, comme le souligne johandvw ci - dessus : personne ne s'en soucie, le .shp a été "assez bon" tel quel .
Matt Wilkie
1

Pour aborder la question sous un angle différent, je ne suis pas sûr que l’utilisation de «Pourcentage de citoyens âgés de 25 ans et plus titulaires d’un baccalauréat ou supérieur» constitue un nom de domaine tout à fait valable. Bien que le mélange d'espaces et d'apostrophes puisse être géré, si vous écrivez du code ou des requêtes, il est plus susceptible d'introduire des bogues.

À mon avis, l’avenir de la distribution de données spatiales devrait se concentrer sur le Web et les services Web, et la spécification WFS (qui utilise le langage GML) est ouverte et établie. GeoJSON est plus petit et peut être plus facile à utiliser en JavaScript. Cependant, avec la compression, les tailles sont comparables.

J'aimerais également voter pour les géodatabases personnelles ESRI . Il s’agit peut-être d’un format Microsoft souvent critiqué, mais il prend en charge les requêtes ODBC, SQL, les vues et permet aux non-développeurs de créer des formulaires de saisie de données simples et d’inclure au moins un certain niveau de contrôle de l’intégrité des données (types de données, longueurs, valeurs uniques). .

geographika
la source
C'est un argument valable. Ce qui est bien avec eux, c’est qu’étant donné la connaissance de la langue anglaise, on peut comprendre ce que les champs signifient.
Canisrufus
C’est pourtant le rôle des métadonnées des jeux de données. Le fichier de formes peut utiliser un fichier XML portant le même nom pour le stocker.
geographika