it-swarm.com.de

Wie viele signifikante Stellen sollte ich für eine GPS-Koordinate in meiner Datenbank speichern?

Ich habe in meiner MySQL-Datenbank sowohl Längen- als auch Breitengradkoordinaten (GPS-Daten).

Es ist derzeit gespeichert als:

column     type
------------------------
geolat     decimal(10,6)
geolng     decimal(10,6)

Frage: Brauche ich wirklich einen Datentyp von decimal(10,6), um die Koordinatendaten richtig zu speichern?

Da ich einen kombinierten Index für Längen- und Breitengrade habe, ist dieser Index sehr groß. Wenn ich es kleiner machen kann, ohne Kompromisse einzugehen, wäre das großartig.

38
teddyk

WGS84 Daten werden normalerweise als Koordinaten in einer vollständigen Dezimalschreibweise angegeben, normalerweise mit 5 Dezimalstellen. Für Breitengrad (-90 bis +90) können Sie also Dezimalstellen (7, 5) (-90.00000 bis 90.00000) verwenden, z Längengrad können Sie dezimal (8, 5) (-180.00000 bis 180.00000) verwenden.

.00001 gibt eine Genauigkeit von rund einem Meter am Äquator

Der Datentyp DECIMAL/NUMERIC ist eine skalierte Ganzzahl mit fester Genauigkeit und sowohl positive als auch negative Teile des Bereichs sind immer verfügbar - sie wirken sich nicht auf die Genauigkeit oder die Skalierung aus (es ist offensichtlich Speicher erforderlich, aber Sie tun es nicht). Keine Wahl für DECIMAL)

35
Cade Roux

Ich habe immer mit sechs Nachkommastellen gearbeitet. Früher habe ich im Rahmen eines Militärvertrags GIS-Arbeit geleistet, und das war ausreichend.

4
Steve Elmer

Denken Sie daran, dass es einfacher ist, Daten zu reduzieren, als Daten zu erhöhen. Normalerweise ist eine Erhöhung der Datengenauigkeit nicht einmal ohne eine erneute Messung möglich. Und eine erneute Messung ist mit Kosten verbunden. Da ich nichts anderes über Ihre Situation oder die Branche weiß, würde ich sagen, dass Sie so viele Daten/Spezifitäten wie möglich erfassen.

Die Daten, die Sie tatsächlich verwenden, können aus diesem Satz entnommen werden. Wenn Sie ein höheres Maß an Spezifität benötigen, können Sie immer neu berechnen, ohne eine erneute Messung durchführen zu müssen.

Außerdem bin ich mir nicht sicher, ob das Indizieren von Rohdaten das Beste ist, da es sich nicht um eine diskrete Menge von Elementen handelt. Das Erstellen einer Tabelle mit weniger genauen/kleineren Datenpunkten würde die Indizes viel kleiner machen.

3
Mark Canlas

wenn dies für Immobilien ist, haben Sie wirklich so viele Häuser, dass 2 Bytes pro Zeile gespart werden können? Ich würde so genau wie möglich vorgehen, es sei denn, es gab einen guten Grund, dies nicht zu tun.

1
jk.

Die reguläre GGA-Empfindlichkeit bei einer NMEA-Lat/Lon-Ausgabe beträgt nur 3 Dezimalstellen mit einer Auflösung von ungefähr 10 m am Äquator. Einige Marken fügen eine benutzerdefinierte zusätzliche Ziffer hinzu, um 1 m zu erhalten.

4-stellige mm/1000 ist ebenfalls üblich.

Wenn Sie RTK-GPS mit High-End-Präzision verwenden, benötigen Sie möglicherweise mehr Orte, um die Millimetergenauigkeit zu erreichen

0
Martin Beckett

Das hängt davon ab, wie genau Ihre Lokalisierung sein soll. Je größer, desto präziser und je kleiner, desto umfassender werden Ihre Ergebnisse. Ich würde vorschlagen, Ihre Werte größer zu halten, da es sowieso nicht wirklich viele Daten sind.

0
Sampson

Wenn sich alle Koordinaten in einem bestimmten Bereich befinden, fixieren Sie einen zentralen Punkt (d. H. Durchschnittliche aktuelle Punkte und Rundung, um eine Zahl zu erhalten, die Sie laut aussprechen können) und speichern Sie die Koordinaten relativ zu diesem Punkt. Auf diese Weise können Sie wahrscheinlich die ersten 2-4 wichtigsten Ziffern überspringen, was zu erheblichen Einsparungen führt. Denken Sie jedoch daran, diese Daten nur über eine Klasse oder VIEW zu verarbeiten, die echte WGS84-Koordinaten zurückgibt.

0
Simon B.

Sie können auch versuchen, Ihre Koordinaten in verschiedenen Einheiten zu speichern (und/oder damit zu arbeiten). Bei einem Projekt, an dem ich gearbeitet habe, wurden alle unsere Koordinaten in Millisekunden als Long gespeichert (vielleicht ints, es sind ein paar Jahre vergangen). Dies geschah teilweise aus Gründen der Geschwindigkeit und des Speicherplatzes (dies war ein eingebettetes System). Aber die gleiche Logik könnte hier gelten.

0
miko