Je suis en train d'écrire une bibliothèque d'analyse de fichier de formes et j'ai pris quelques décisions de conception dans la spécification que je ne comprends pas tout de suite. J'espère qu'il y a un vieux développeur ESRI assoiffé ici qui peut me dire pourquoi ces choses sont comme elles sont.
Le fichier d'enregistrement principal (.shp) a une finalité mixte . Plus précisément, certaines parties de l'en-tête présentent un ordre d'octet volumineux, mais les enregistrements sont tous peu étendus. Je travaille généralement à un niveau plus élevé que les octets et les bits, mais tout ce que j'ai lu jusqu'à présent au sujet de l'endianisme marque ce fait comme inhabituel. Pourquoi le fichier spécifié n'a-t-il pas une finalité uniforme?
Le champ "Longueur du fichier", ainsi que d'autres champs de longueur et de position, sont enregistrés en mots de 16 bits, au lieu du positionnement 8 bits plus standard (de mon point de vue limité). Comment cette décision a-t-elle été prise?
J'ai posté une question similaire sur Stack Overflow, mais je n'ai reçu aucune réponse. Si cela semble trop éloigné du sujet pour d'autres personnes, je pourrais soutenir la fermeture.
Réponses:
Le développement des fichiers de formes s'est déroulé parallèlement au développement d'ArcView, spécialement conçu pour être indépendant de la plate-forme. (En fait, cela s’est avéré être son inconvénient: en s’appuyant sur une interface développée dans une interface graphique indépendante de la plate-forme appelée "Neuron Data", il ne pouvait tirer parti de nombreuses fonctionnalités de Windows. Il finissait par refléter le pire de tous les systèmes qu’il utilisait. a été commercialisé.) Bien que la spécification de fichier de forme ait été étrange au début, elle a toutefois donné un sens à ce concept: dans la mesure où les fichiers de forme sont destinés à de nombreuses plates-formes, leur spécification ne doit favoriser aucune d’entre elles et doit donc être tout aussi odieuse. aux programmeurs de toutes tendances.
La deuxième question semble reposer sur une hypothèse fausse. Par exemple, le champ "Longueur du fichier" apparaît avec le décalage d'octet 24 dans l'en-tête principal et correspond à un entier (signé) de quatre octets (32 bits), comme il doit l'être pour représenter une longueur maximale de 2 ^ 31- 1. Il est précédé d'un "Code de fichier" de quatre octets et de cinq autres champs de quatre octets réservés pour une utilisation future: lorsque vous réservez cet espace, vous souhaitez bien entendu agrandir autant que possible les champs, ce qui à l'époque était de 32 bits, afin de maintenir la plus grande flexibilité possible. Il est également utile d’aligner les champs numériques d’un fichier sur les limites de mots:
la source
int
était de 16 bits.Quelqu'un connaît ces réponses et plus mais il ne parle pas.
L’équipe avec laquelle j’ai travaillé pour décoder les fichiers non documentés sbn et sbx a découvert beaucoup d’autres bizarreries qui sont à la fois similaires et encore plus bizarres à la fois.
La plupart des structures de fichier de formes sont logiques et très efficaces, ce qui suggère aux développeurs d’ESRI de réfléchir. C'est comme si ils avaient un groupe de développeurs intelligents avec un lunatique jeté dedans.
Comme suggéré par d'autres publications, les bizarreries sont probablement le résultat d'exigences de machine ou de langage qui nous sont étrangères maintenant.
J'ai toujours pensé que les mots 16 bits étaient un moyen simple de gagner de la place. Vous constaterez que vous devez conserver les valeurs de mot de 16 bits en mémoire lorsque vous manipulez des fichiers. La stratégie consistant à calculer des valeurs pour économiser de l'espace est courante dans les formats binaires, même aujourd'hui. Mais la suggestion int native de Mike est tout aussi probable.
Le retournement endian est juste bizarre. Personne n'a une bonne réponse que j'ai vue.
Le format dbf a été extrait du format dbase III datant des années 1960. Il a été largement utilisé depuis et peut être trouvé sous d'autres noms, y compris foxpro et xbase.
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 autre tentative de le remplacer a été trop compliquée pour permettre un simple stockage de vecteurs ou trop exclusive. Même ESRI pensait que les fichiers de formes seraient un jouet qui permettrait aux débutants d’orienter ArcINFO, les couvertures et les géodatabases. Internet a probablement beaucoup à voir avec le décollage du format.
J'ai beaucoup appris en écrivant pyshp. Écrire un analyseur est un moyen fantastique d’apprendre un format.
la source
Ceci est mon point de vue sur elle.
Le format de fichier de formes a très probablement évolué à partir d’ARC / INFO, dont l’histoire remonte aux origines de FORTRAN / PR1ME. Tous les formats ARC / INFO avaient cet en-tête de 100 octets et la grande finesse du code de fichier et de la longueur du fichier (par exemple, les couvertures, les TIN).
Lorsque les fichiers de formes ont été créés pour ArcView 1, ESRI a concentré ses efforts sur le marché de Microsoft Windows et le reste du format Shapefile est fortement axé sur le fait d’être un peu moins puissant que les PC.
La permutation constante entre les finales était, sans doute, la nécessité de préserver les origines existantes tout en anticipant les avantages liés à l’introduction de la plateforme.
la source
J'ai toujours supposé que la scission finale était causée par la présence de deux équipes, l'une sur les stations de travail Sun et l'autre sur les PC, qui ne se réunissaient pas avant la fin du processus de développement.
J'aimerais savoir ce qui s'est réellement passé.
la source
Je pense que quelque part là-bas, j'ai entendu quelque chose à propos de l'origine dbf / foxpro.
Cela aurait pu être juste un rêve étrange que j'avais cependant.
la source
Vous devez comprendre que les fichiers de formes ont été introduits il y a environ 20 ans. À cette époque, il existait une myriade de formats de fichiers incohérents et mal conçus. Les fichiers de formes ne font donc pas exception. J'ai moi-même écrit un analyseur de fichier de formes et je dois dire que l'analyse du format DBF me pose bien plus de problèmes que les fichiers de formes (.SHP) eux-mêmes.
la source