Saya sedang melakukan proyek astronomi. Saya ingin memiliki informasi tentang gambar kami disimpan dalam database yang diaktifkan secara spasial. Ini, saya pikir, harus menjadi kasus khusus yang sangat mudah untuk fungsi SIG karena langit dapat diperlakukan sebagai bola sempurna, dan tidak memerlukan perawatan elips seperti permukaan bumi. Sayangnya, saya belum menemukan cara untuk melakukan ini dan saya telah menghindari ranjau dengan fungsi spasial yang menggunakan bumi elips. (Cukup banyak fungsi apa pun yang mengembalikan meter bukannya derajat mungkin menggunakan perhitungan elips. Untungnya, banyak fungsi PostGIS yang saya butuhkan tampaknya memiliki implementasi yang tidak lengkap di mana dokumentasi secara eksplisit menyatakan bahwa hasil yang dikembalikan adalah untuk bola dan bukan untuk ellipsoid. Tapi itu mungkin berubah dengan versi yang akan datang, yang menjadi perhatian.)
Latar Belakang: Saat ini saya menggunakan PostgreSQL dengan koordinat PostGIS dan WGS 84 (SRID = 4326). Ini bekerja dengan cukup baik. Saya membuat POLYGON tertutup dari kenaikan yang tepat dan deklinasi keempat sudut gambar. Saya memiliki banyak gambar (10rb atau lebih), yang meliputi area langit yang luas. Setiap gambar sekitar 1 derajat persegi. Dari himpunan gambar-gambar ini, saya membuat mosaik dari subset kecil berisi 15 hingga 30 gambar. Setiap mosaik berukuran sekitar 1,5 derajat persegi.
Saat ini, saya menyimpan geografi mosaik sebagai MULTIPOLYGON yang terdiri dari semua POLYGON yang sesuai dengan setiap gambar yang masuk ke mosaik. [Solusi yang lebih baik adalah dengan membuat POLYGON tunggal yang menggambarkan perimeter penyatuan semua poligon individu. Saya tidak tahu apakah ini dapat dilakukan dalam koordinat bola (yaitu, bahwa tipe geografi). Ini juga akan menjadi jawaban yang menarik bagi saya juga.] Garis tanggal dan kutub langit mungkin dimasukkan dalam gambar dalam dataset sehingga saya menghindari proyeksi ke koordinat planar sejauh mungkin.
Sistem koordinat apa yang harus saya gunakan untuk koordinat surgawi dengan fungsi PostGIS?
Saya telah melihat http://spatialreference.org/ tetapi belum menemukan apa pun sejauh ini. Google sedikit berubah. Saya bingung. Pada dasarnya, saya ingin memastikan bahwa jika suatu fungsi mengembalikan meter sebagai jarak, itu adalah meter di sepanjang lingkaran besar di bola.
Secara lebih umum, beberapa saran untuk menggunakan koordinat langit dalam basis data spasial juga akan dihargai.
Sudahkah saya melakukan kesalahan dengan memilih PostGIS?
Apakah ada pilihan komersial yang jauh lebih unggul?
Pilihan FOSS?
Saya menggunakan PostGIS 1.5.2. Saya belum mencoba PostGIS 2.0. Saya ingin tahu apakah fungsi ST_CoveredBy bekerja dengan POLYGON dan MULTIPOLYGON dari tipe geografi. Jika ada yang menjalankan 2.0, dapatkah Anda memberi tahu saya jika Anda mendapatkan kesalahan yang sama seperti ini:
mydb=# select ST_CoveredBy(ST_GeographyFromText('MULTIPOLYGON(( (10.37795 -69.57926,8.9498 -69.54875,9.0178 -69.21643,10.4242 -69.24648,10.37795 -69.57926),(10.42436 -69.24618,9.01774 -69.2162, 9.08363 -68.88389,10.46914 -68.91344,10.42436 -69.24618)))'),ST_GeographyFromText('POLYGON((10.46915 -68.91315,9.08371 -68.88364,9.14755 -68.5513,10.5125 -68.58038,10.46915 -68.91315))'));
ERROR: geography_covers: only POLYGON and POINT types are currently supported
CONTEXT: SQL function "st_coveredby" statement 1
Saya sudah mencoba PostGIS 2.0. Fungsi ini masih hanya bekerja pada titik dan poligon, bukan bentuk yang lebih umum.
sumber
Jawaban:
Lihat pgsphere, ini dirancang khusus untuk menangani data astronomi.
http://pgsphere.projects.postgresql.org/
sumber
Dimungkinkan untuk menyimpan posisi selestial di PostGIS - Anda hanya perlu membuat sistem koordinat Anda sendiri!
PostGIS mendapatkan semua sistem koordinat dan informasi proyeksi dari tabel
spatial_ref_sys
yang biasanya diisi ketika database diinisialisasi. Tapi tidak ada yang menghentikan Anda menambahkan proyeksi Anda sendiri - memang itu didorong secara praktis .Secara umum dengan hampir setiap GIS / basis data spasial / produk pemetaan di luar sana, PostGIS menggunakan Proj4 untuk kebutuhan proyeksi, dan karenanya Anda perlu memasukkan string Proj4 ke dalam
spatial_ref_sys
tabel. Sebuah SRS bola sederhana dalam bentuk PROJ4 adalah:+proj=longlat +ellps=sphere +no_defs
. PostGIS juga membutuhkan versi proyeksi WKT, tapi saya pikir itu hanya digunakan sebagai teks cantik.Anda juga perlu membuat SRID unik untuk SRS baru Anda, serta "otoritas", tetapi ini bisa apa saja yang Anda suka.
Jadi untuk memasukkan entri baru ke dalam
spatial_ref_sys
, cukup lakukan SQL ini:Perhatikan bahwa saya telah memilih 40000 sebagai SRID - ini adalah nomor yang Anda gunakan dalam tabel objek langit Anda. Authroity adalah "ME", tetapi ini bisa nama Anda, organisasi, atau apa pun yang benar-benar hingga 256 karakter. Angka berikutnya, 1, hanyalah pengidentifikasi unik Anda untuk entri itu, relatif terhadap otoritas. Secara teori Anda bisa merujuk entri ini sebagai ME: 1, tetapi untuk semua pemrosesan PostGIS, ini adalah SRID unik yang diperhitungkan. Entri WKT yang saya hasilkan dengan GDAL dan Python:
Sekarang peringatan:
sumber
LON = (RA*15) - 180
danLAT = DEC
?