Länge der Shapefile-Felder bestimmen?

8

Bei meiner Arbeit habe ich mehrere Shapefiles geerbt, die von MapInfo stammen und die ich in ein neues Projekt in QGIS einbringe. Ich habe die Möglichkeit, die Spaltennamen zu ändern, Spalten hinzuzufügen und zu subtrahieren. Da sie noch nicht zu viele Daten enthalten, kann ich neu beginnen und auch die Feldlängen anpassen.

Ich stelle fest, dass einige der Feldlängen viel größer sind als nötig, und ich erinnere mich, dass es am besten ist, die Feldlängen so zu halten, dass sie nicht länger sind als nötig Sparen Sie Platz, um die Effizienz zu verbessern.

Ist das noch wünschenswert oder spielt die Feldlänge keine Rolle mehr?

Martin Hügi
quelle
Dies hängt vom verwendeten Format ab.
Bugmenot123
1
Die Feldlänge sollte wahrscheinlich auf "nicht länger als nötig" gehalten werden. Per Definition benötigen Sie nichts länger. Natürlich hängt es davon ab, was Sie erfassen, um zu bestimmen, welche Länge Sie "benötigen".
DMusketeer
3
IMO ist die wichtigste bewährte Methode, die Verwendung von Shapefiles nach Möglichkeit einzustellen.
Alphabetasoup

Antworten:

12

Die Antwort hängt vom Datenformat ab. dBase-III + -Dateien, die in Shapefiles für Attribute verwendet werden, haben eine feste Breite. Wenn Sie also eine FIPS-Spalte als Text mit einer Breite von 254 definieren, werden 254 Byte verwendet. Schlimmer noch, dBase hat eine maximale Aufzeichnungsbreite von 4000 Bytes, sodass die für ein Feld mit fünf Zeichen verschwendeten 249 nicht für andere Felder verfügbar sind (von denen es maximal 100 oder 255 gibt, je nachdem, wer den Standard implementiert). Einschränkungen gelten auch für die Gesamtgröße der dBase-Datei (2 GB), die von 536 KByte Datensätzen bei maximaler Breite erreicht werden kann, wenn 5,36 m Datensätze bei 400 Byte Breite verfügbar sind.

Es gibt noch einen weiteren Grund, die Feldbreite zu begrenzen - die Datenqualität. Wenn ein Bezeichner legal nur zwei Zeichen enthalten kann, Sie ihn jedoch mit zehn definieren, erhöhen Sie die Wahrscheinlichkeit, dass ein ungültiger Wert mit fetten Fingern von der Datendatei akzeptiert wird.

Wenn Sie jedoch nur die erforderliche Breite angeben und internationale Daten im UTF-8-Format abrufen, ist möglicherweise nicht genügend Speicherplatz vorhanden, wenn ein Zeichen 2 bis 6 Byte verwenden kann.

Für Datenbankzeichenfolgenfelder (einschließlich Datei-Geodatabase), die im Allgemeinen beendet werden und daher keinen Zeilenplatz verschwenden, ist Flexibilität eine Option, aber für Formate mit fester Breite gelten weiterhin die alten Regeln.

Vince
quelle
Danke für die Antworten. Ich bin mir nicht sicher, ob ich die Antwort von Vince vollständig verstehe, da ich nicht so viel über verschiedene Datenbankstrukturen weiß, aber ich verstehe das Wesentliche. Ich denke, meine Hauptüberlegung wird dann die Datenintegrität sein und nichts länger als
nötig
Die wichtigsten Instrumente, um denjenigen zu danken, die Ihre Frage beantworten, sind das Upvoten und Markieren der beantworteten Frage. Wenn Sie sich über etwas nicht sicher sind, fragen Sie. Die Idee hier ist, gute Antworten zu bauen .
Vince
1
@Vince hat dies gut beantwortet, es gibt nur noch einen kleinen Grund, den ich hinzufügen möchte: Die Absicht klarstellen. Wenn ein Feld mit dem Namen "state" nur 2 Zeichen enthält, ist es offensichtlich, dass das Feld die Standardabkürzung für einen State enthalten soll. Wenn Sie dieses Feld jedoch mit 50 oder 200 Zeichen versehen, wird es möglicherweise so interpretiert, dass es den vollständigen Namen des Status enthält. Dies hängt wieder mit der Gesamtdatenqualität zusammen.
RustProof Labs
Follow-up - Nach 18 Monaten macht das alles jetzt viel mehr Sinn - tolle Antwort
Martin Hügi