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.

Jawaban:


14

Anda dapat menggunakan datatype POIN bawaan tanpa postgis.


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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.