Robię projekt astronomiczny. Chcę, aby informacje o naszych obrazach były przechowywane w bazie danych z włączoną przestrzenią. Sądzę, że powinien to być bardzo łatwy specjalny przypadek funkcji GIS, ponieważ niebo można traktować jako idealnie kuliste i nie wymaga ono obróbki eliptycznej jak powierzchnia ziemi. Niestety, nie znalazłem jeszcze sposobu na zrobienie tego i unikałem kopalni za pomocą funkcji przestrzennych wykorzystujących ziemię eliptyczną. (Prawie każda funkcja, która zwraca metry zamiast stopni, może korzystać z obliczeń eliptycznych. Na szczęście wiele funkcji PostGIS, których potrzebowałem, wydaje się mieć niepełne implementacje, w których dokumentacja wyraźnie stwierdza, że zwracane wyniki są dla kuli, a nie dla elipsoida. Ale to może się zmienić w przyszłych wersjach, co jest powodem do niepokoju.)
Tło: Obecnie używam PostgreSQL ze współrzędnymi PostGIS i WGS 84 (SRID = 4326). To działa całkiem dobrze. Tworzę zamknięty POLYGON z właściwego wzniesienia i deklinacji czterech rogów obrazu. Mam dużo zdjęć (10k lub więcej), pokrywających duży obszar nieba. Każde zdjęcie ma około 1 stopnia kwadratowego. Z zestawu tych obrazów wykonuję mozaiki z małych podzbiorów od 15 do 30 obrazów. Każda mozaika ma kwadrat około 1,5 stopnia.
Obecnie przechowuję geografię mozaiki jako MULTIPOLYGON, który składa się ze wszystkich POLYGONÓW odpowiadających każdemu obrazowi, który wszedł do mozaiki. [Lepszym rozwiązaniem byłoby stworzenie pojedynczego POLYGONU, który opisuje obwód unii wszystkich poszczególnych wielokątów. Nie wiem, czy można tego dokonać we współrzędnych sferycznych (tzn. Czy typ geograficzny). To też byłaby dla mnie interesująca odpowiedź.] Linia daty i bieguny niebieskie mogą być zawarte w obrazie w zestawie danych, dlatego unikałem projekcji na współrzędne planarne w możliwym zakresie.
Jakiego układu współrzędnych powinienem użyć dla współrzędnych niebieskich z funkcjami PostGIS?
Spojrzałem na http://spatialreference.org/, ale jak dotąd niczego nie znalazłem. Google niewiele się pojawiło. Jestem zakłopotany. Zasadniczo chcę się upewnić, że jeśli funkcja zwraca metry jako odległość, są to metry wzdłuż wielkiego koła na kuli.
Mówiąc bardziej ogólnie, docenione zostaną również niektóre porady dotyczące używania współrzędnych niebieskich w przestrzennej bazie danych.
Czy popełniłem błąd, wybierając PostGIS?
Czy istnieją znacznie lepsze wybory handlowe?
Wybory FOSS?
Używam PostGIS 1.5.2. Nie próbowałem jeszcze PostGIS 2.0. Jestem ciekawy, czy funkcja ST_CoveredBy współpracuje z POLYGON i MULTIPOLYGON o typie geograficznym. Jeśli ktoś korzysta z wersji 2.0, czy możesz mi powiedzieć, czy występuje ten sam błąd:
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
Próbowałem PostGIS 2.0. Ta funkcja nadal działa tylko na punktach i wielokątach, a nie na bardziej ogólnych kształtach.