Bagaimana saya harus mewakili lintang dan bujur di Postgres tanpa menggunakan PostGIS?

12

Bagaimana saya harus mewakili lintang dan bujur di Postgres tanpa menggunakan PostGIS? Sistem yang saya gunakan tidak mengizinkan SQL passthrough jadi saya tidak bisa menggunakan POSTGIS.

Yazz.com
sumber

Jawaban:

14

Anda dapat menggunakan datatype POIN bawaan tanpa postgis.

TomH
sumber
6

Anda juga bisa menggunakan kolom terpisah untuk latitudedan longitudeatau membuat tipe Anda sendiri . Either way mungkin baik untuk membatasi nilai yang diizinkan, dalam contoh ini saya juga menggunakan domain untuk menghindari pengulangan kendala jika tipe ini digunakan di lebih dari satu tabel:

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 mengatakan coba topanswers.xyz
sumber
5

Untuk aplikasi non GIS, saya hanya menggunakan kolom, seperti yang disarankan oleh Jack, meskipun saya tidak peduli dengan nilai cek. Sebaiknya tentukan juga datum (IE NAD27 ) di kolom tambahan, karena datum penting untuk interpretasi nilai yang tepat.

Alice Wonder
sumber