Bir astronomi projesi yapıyorum. Mekansal olarak etkinleştirilmiş bir veritabanında saklanan resimlerimiz hakkında bilgi sahibi olmak istiyorum. Bunun, CBS fonksiyonları için çok kolay bir özel durum olması gerektiğini düşünüyorum, çünkü gökyüzü mükemmel küresel olarak ele alınabilir ve dünyanın yüzeyi gibi eliptik bir işlem gerektirmez. Ne yazık ki, bunu yapmanın bir yolunu bulamadım ve eliptik bir toprak kullanan mekansal işlevlere sahip mayınlardan kaçıyorum. (Dereceler yerine sayaçları döndüren hemen hemen tüm işlevler eliptik bir hesaplama kullanıyor olabilir. Neyse ki, ihtiyacım olan PostGIS işlevlerinin çoğunun, belgelerin açıkça döndürülen sonuçların bir küre için olduğunu belirttiği eksik uygulamalara sahip olduğu görülüyor. Elipsoid. Ancak bu endişe kaynağı olacak gelecekteki sürümlerle değişebilir.)
Arkaplan: PostgreSQL'i PostGIS ve WGS 84 koordinatlarıyla kullanıyorum (SRID = 4326). Bu oldukça iyi çalışıyor. Görüntünün dört köşesinin aşağı doğru yükselmesinden ve düşmesinden kapalı bir POLYGON yaratıyorum. Gökyüzünün geniş bir alanını kapsayan çok sayıda resme (10k veya daha fazla) sahibim. Her görüntü yaklaşık 1 derece karedir. Bu görüntüler kümesinden, 15 ila 30 görüntünün küçük alt kümelerinden mozaikler yapıyorum. Her mozaik yaklaşık 1.5 derece karedir.
Halen, mozaiklerin coğrafyasını, mozaya giren her görüntüye karşılık gelen tüm POLYGON'lardan oluşan bir MULTIPOLYGON olarak saklıyorum. [Daha iyi bir çözüm , tüm bireysel çokgenlerin birliğinin çevresini tanımlayan tek bir POLYGON oluşturmak olacaktır . Bunun küresel koordinatlarda yapılıp yapılmadığını bilmiyorum (yani bu coğrafya türü). Bu benim için de ilginç bir cevap olurdu.] Tarih çizgisi ve gök kutupları veri setindeki bir görüntüye dahil edilebilir, bu yüzden mümkün olduğu kadar düzlemsel koordinatları yansıtmaktan kaçınıyorum.
PostGIS fonksiyonlarına sahip göksel koordinatlar için hangi koordinat sistemini kullanmalıyım ?
Http://spatialreference.org/ adresine baktım ancak şu ana kadar hiçbir şey bulamadım. Google çok az şey çözdü. Ben güdük oldum. Temel olarak, eğer bir işlev sayaçları mesafe olarak döndürürse, bunun küre üzerindeki büyük bir daire boyunca metre olmasını sağlamak istiyorum.
Daha genel olarak, uzamsal bir veritabanında göksel koordinatları kullanmak için bazı tavsiyeler de takdir edilecektir.
PostGIS'i seçerek mi hata yaptım?
Çok üstün ticari seçenekler var mı?
FOSS seçenekleri?
PostGIS 1.5.2 kullanıyorum. PostGIS 2.0'ı henüz denemedim. ST_CoveredBy işlevinin bir POLYGON ve MULTIPOLYGON türünde bir coğrafya ile çalışıp çalışmadığını merak ediyorum. Herhangi biri 2.0 çalıştırıyorsa, bununla aynı hatayı alırsanız bana söyleyebilir misiniz:
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
PostGIS 2.0'ı denedim. Bu fonksiyon hala sadece noktalar ve çokgenler üzerinde çalışır, daha genel şekiller değildir.