Wie soll ich einen Breiten- und Längengrad in Postgres darstellen, ohne PostGIS zu verwenden?

12

Wie soll ich einen Breiten- und Längengrad in Postgres darstellen, ohne PostGIS zu verwenden? Das von mir verwendete System lässt kein SQL-Passthrough zu, daher kann ich POSTGIS nicht verwenden.

Yazz.com
quelle

Antworten:

14

Sie können den integrierten POINT-Datentyp ohne Postgis verwenden.

TomH
quelle
6

Sie können auch separate Spalten für latitudeund verwenden longitudeoder einen eigenen Typ erstellen . In beiden Fällen kann es sinnvoll sein, die zulässigen Werte zu beschränken . In diesem Beispiel verwende ich auch Domänen , um zu vermeiden, dass sich Einschränkungen wiederholen, wenn der Typ in mehr als einer Tabelle verwendet wird:

create domain latitude_t as double precision not null 
                                             check(value>=-90 and value<=90);
create domain longitude_t as double precision not null 
                                              check(value>-180 and value<=180);

create type geocoord_t as (latitude latitude_t, longitude longitude_t);

create table my_table(id serial, geocoord geocoord_t);

insert into my_table(geocoord) values ((31.778175,35.22995));

select id, (geocoord).* from my_table;
 id | latitude  | longitude
----+-----------+-----------
  1 | 31.778175 |  35.22995
Jack sagt, versuchen Sie es mit topanswers.xyz
quelle
5

Für Nicht-GIS-Anwendungen verwende ich nur Spalten, wie von Jack vorgeschlagen, obwohl ich mich nicht um den Prüfwert kümmere. Es ist eine gute Idee, das Datum (IE NAD27 ) auch in einer zusätzlichen Spalte anzugeben , da das Datum für die richtige Interpretation der Werte wichtig ist.

Alice Wonder
quelle