Sollte ich Längen- und Breitengrade als Strings oder Floats (oder etwas anderes) speichern?
(Ich benutze Activerecord / Ruby auf Schienen, wenn das wichtig ist).
Aktualisieren:
MySQL in der Entwicklung und Postgresql in der Produktion (warum ist das wichtig?)
ruby-on-rails
activerecord
types
Tom Lehman
quelle
quelle
Antworten:
Wenn Sie komplexere geografische Berechnungen durchführen müssen, können Sie PostGIS für Postgresql oder MySQL Spatial Extensions für MySQL untersuchen. Andernfalls sollte ein Schwimmer (doppelte Genauigkeit könnte eine gute Idee sein) funktionieren.
Bearbeiten: Es sieht so aus, als ob die GeoRuby- Bibliothek eine Rails-Erweiterung für die Arbeit mit den räumlichen / GIS-Erweiterungen für beide oben genannten Datenbanken enthält.
quelle
Das benutze ich:
add_column :table_name, :lat, :decimal, {:precision=>10, :scale=>6} add_column :table_name, :lng, :decimal, {:precision=>10, :scale=>6}
quelle
Wenn Sie keine räumlich aktivierte Datenbank verwenden, empfiehlt Google Maps die Verwendung von Floats der Größe (10,6). Das gibt Ihnen 6 Stellen nach der Dezimalstelle - wenn Sie mehr Präzision wünschen, können Sie entsprechend anpassen.
quelle
Ich würde vorschlagen, Floats zu verwenden, obwohl dies keinen großen Unterschied macht. Floats sind einfacher zu berechnen, wenn Sie dies in Zukunft wünschen.
quelle
Im Allgemeinen möchten Sie, dass Lat / Long in dem größten Float-Typ gespeichert wird, den Sie haben. In einigen Breiten (z. B. in der Nähe des Äquators) können sehr kleine Längenänderungen großen Unterschieden in Bezug auf die Oberflächenentfernung entsprechen.
Ich nehme an, wenn es sich um ein Feld handelt, auf dem Sie niemals rechnen möchten, können Sie eine Zeichenfolge verwenden. Das würde ich aber vermeiden.
quelle
Da sie eine feste Genauigkeit haben, sollten Sie sie konvertieren und als Ganzzahl speichern, um die Leistung erheblich zu verbessern.
(SIEHE http://www.postgresql.org/docs/9.1/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL )
quelle