Saya menggunakan PostGIS 1.5.2, dengan geometri di SRID: 900913. Saya perlu membuat lingkaran menggunakan daftar titik sebagai pusat, dengan radius 600 kilometer. Saya menggunakan kueri ini:
INSERT INTO circles (geom) (
SELECT ST_Buffer(point, 600000, 'quad_segs=8')
FROM points
);
Tetapi lingkaran yang dibuat tidak memiliki radius 600 kilometer (radiusnya dekat dengan panjang ini, tetapi tidak persis).
Apakah ada metode lain untuk membuat lingkaran di PostGIS?
CATATAN: Informasi yang diwakili berasal dari Spanyol. Proyeksi yang benar adalah 4326, tetapi klien menggunakan raster Google, jadi saya menyimpan data di 900913 untuk menghindari proyeksi ulang dan meningkatkan kinerja.
postgis
postgis-1.5
angelcervera
sumber
sumber
SELECT ST_Distance( (select point from points where id = 7), (select point from points where id = 42));
kembali lebih dari 100km perbedaan menghormati gmap-pedometer.com, tetapi jika saya menganggap panjang ini sebagai benar, jari-jari lingkaran sempurna. Tetapi orang menggunakan jarak pertama sebagai radius, tidak ada jarak yang dikembalikan oleh st_distance. Apakah mungkin mengubah jarak pertama ke yang kedua?Jawaban:
Coba ini:
Ini membalik ke dalam geografi kemudian menggunakan pemilihan SRID inbuilt untuk (ironisnya) membalik kembali ke geometri di mana buffer planar yang baik dijalankan kemudian membalik kembali. Masalah dengan pendekatan Anda di Mercator adalah Mercator tidak menjaga jarak. Menggunakan proyeksi lokal yang lebih tepat memberikan hasil yang lebih baik, dan itulah yang terjadi pada metode di atas.
sumber
Anda dapat meningkatkan nilai quad_seg untuk mendapatkan lingkaran yang lebih akurat. Untuk mendapatkan lingkaran nyata Anda harus bekerja dengan tipe geometri melengkung, tetapi saya tidak tahu perangkat lunak apa yang bisa menunjukkan itu.
Akurasi srid 90013 juga sangat buruk karena merupakan proyeksi yang mencakup seluruh dunia.
Anda akan mendapatkan hasil yang lebih akurat dengan proyeksi lokal.
sumber
Itu tergantung di mana lingkaran Anda sedang dibuat. Apakah mereka dekat garis khatulistiwa atau lebih dekat ke kutub?
Lihatlah peta ini . Apakah Anda pikir Antartica atau Greenland benar-benar sebesar itu? Itu adalah proyeksi yang Anda gunakan, kan?
Saya akan merekomendasikan Anda melakukan membaca cepat dokumen USGS ini tentang proyeksi , terutama tabel di bawah ini yang memberi Anda gambaran singkat tentang proyeksi yang baik untuk apa.
Dan setelah semua itu, saya pikir saya akhirnya harus menjawab pertanyaan Anda :)
Apa yang dikatakan Nicklas adalah nasihat yang bagus. Apakah ada proyeksi khusus untuk area lokal Anda yang akan bekerja lebih baik?
Kalau tidak, Anda mungkin ingin melihat tipe Geografi PostGIS yang baru . Namun demikian, jawaban yang paling tepat tergantung pada di mana data Anda berada.
PEMBARUAN: Karena sekarang kami tahu bahwa data Anda di Spanyol, apakah Anda melihat menyimpannya dalam proyeksi lokal seperti UTM Zone 31N , melakukan operasi Anda menggunakan itu, dan kemudian memproyeksikannya kembali ke Google Web Mercator?
sumber
Anda dapat menggunakan SQL / MM Bagian 3 jenis geometri CIRCULARSTRING dan / atau CURVEPOLYGON.
Namun, berhati-hatilah bahwa dukungan untuk jenis ini terbatas, baik dengan fungsi internal maupun program eksternal. Anda dapat menggunakan ST_CurveToLine untuk membantu memvisualisasikannya.
Lebih jauh lagi, ini agak tidak menyenangkan (seperti pada PostGIS 2.0 svn) yang
SELECT ST_Area('CURVEPOLYGON(CIRCULARSTRING(2 1, 1 2, 0 1, 1 0, 2 1))'::geometry)
hanya merupakan perkiraan kasar π . (Bandingkan dari 3.14033115695475 hingga 3.14159265358979 daripi()
).sumber