Jak mam reprezentować szerokość i długość geograficzną w Postgres bez korzystania z PostGIS?


12

Jak mam reprezentować szerokość i długość geograficzną w Postgres bez korzystania z PostGIS? System, którego używam, nie pozwala na przekazywanie SQL, więc nie mogę używać POSTGIS.

Odpowiedzi:


14

Możesz użyć wbudowanego typu danych POINT bez postgis.


6

Możesz także użyć osobnych kolumn latitudei longitudelub utworzyć własny typ . Tak czy inaczej dobrze może być ograniczenie dozwolonych wartości, w tym przykładzie używam również domen, aby uniknąć powtarzania ograniczeń, jeśli typ jest używany w więcej niż jednej tabeli:

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

5

W przypadku aplikacji innych niż GIS używam tylko kolumn, jak sugeruje Jack, chociaż nie zawracam sobie głowy wartością kontrolną. Dobrym pomysłem jest również podanie układu odniesienia (IE NAD27 ) w dodatkowej kolumnie, ponieważ układ odniesienia jest ważny dla prawidłowej interpretacji wartości.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.