Saya menggunakan PostGIS 2.0.0 dan ingin menyimpan Permukaan GML dengan cara yang memungkinkan menghitung persimpangan antara permukaan itu dan berbagai titik dan garis. Dalam kasus saya, Surface akan memiliki satu PolygonPatch tanpa cincin interior dan cincin eksterior yang mungkin berupa LineStringSegment, Geodesic, Arc, atau Circle. Jaraknya bisa dalam urutan puluhan hingga ratusan mil. Saya melihat PostGIS memiliki CIRCULARSTRING
dan CURVEPOLYGON
, yang tampaknya merupakan cara yang baik untuk menyimpan Arc, kecuali bahwa mereka tidak didukung oleh geography
tipenya saja geometry
. Apa cara terbaik untuk menyimpan ini? (Saya cukup baru di PostGIS dan GIS secara umum, jadi sangat mungkin saya kehilangan sesuatu yang jelas.)
9
Jawaban:
ST_GeomFromGML
Anda dapat menyimpan fitur GML Anda sebagai datatype PostGIS Geometry dengan menggunakan fungsi ST_GeomFromGML yang akan mengubah GML Anda ke datatype geometri. FYI: Ada fungsi serupa untuk KML, WKT, dan sebagainya.
lakukan sesuatu seperti:
Setelah Anda memilikinya di bidang geometri, Anda dapat melakukan semua persimpangan yang menyenangkan dan hal-hal yang ingin Anda lakukan di PostGIS
Kemudian Anda dapat memuntahkan kembali hasil Anda dalam format GML menggunakan ST_AsGML
EDIT # 1 Saya yakin Anda sedang mencari:
http://postgis.net/docs/ST_Distance_Sphere.html
http://postgis.net/docs/ST_Distance_Spheroid.html
EDIT # 2
Saya menggunakan "POSTGIS =" 1.5.2 "(versi lebih tua dari Anda) dan pernyataan berikut berfungsi dengan baik:
Anda harus menggunakan kombinasi fungsi untuk mendapatkan yang Anda butuhkan.
distance_spheroid tidak mendukung CIRCULARSTRING karena mengambil tipe data geometri.
Harap tambahkan EDIT ke pertanyaan awal Anda dengan sepotong sampel GML yang bermasalah dengan Anda dan saya akan menuliskan pernyataan untuk Anda.
sumber
Pada akhirnya saya menyerah untuk menyimpan busur atau lingkaran "tepat". Saat mengimpor GML Arc (yang didefinisikan oleh 3 poin pada arc) Saya sementara membuat geometri
CIRCULARSTRING
, lalu mengonversinya menjadi geografi, seperti ini:Saat mengimpor GML ArcByCenterPoint (yang ditentukan oleh titik pusat, jari-jari dan sudut mulai dan ujung) saya memperkirakan secara langsung dengan memproyeksikan titik pada interval 1 derajat dari sudut mulai ke sudut ujung. Ini dilakukan pada sphere, bukan spheroid, sehingga tidak sepenuhnya akurat, tetapi ada tiket PostGIS untuk mengimplementasikan proyeksi azimuth dan point untuk tipe geografi. Sama untuk lingkaran.
sumber