2011-01-17 14 views
7

Używam PostgreSQL z PostGIS. Wszystkie moje dane są już dziesiętnie długie/długie dołączone do niego (tj. -87.34554 33.12321), ale aby użyć PostGIS, muszę przekonwertować go na określony typ SRID. Większość moich zapytań szuka danych w określonym promieniu.Jakiego SRID powinienem użyć w mojej aplikacji i jak?

Jakiego identyfikatora SRID należy użyć? Stworzyłem już kolumnę geometrii z SRID 4269. W tym przykładzie: link text autor konwertuje SRID 4269 na SRID 32661. Jestem bardzo zdezorientowany, jak i kiedy używać tych SRIDów. Każdy lite na ten temat byłby naprawdę doceniany.

Odpowiedz

6

Tak długo, jak nigdy nie zamierza się przenosić/przekształcać danych na inny układ współrzędnych, nie ma znaczenia, z czego skorzystasz. Jednak zakładając, że nie chcesz wyrzucać ważnych metadanych i chcesz je przekształcić, będziesz chciał upewnić się, że przydzielony ciasowy pasuje do danych, więc postgis wie, co zrobić, gdy nadejdzie czas.

Dlaczego więc chciałbyś przekwalifikować się z epsg: 4269? Odpowiedź brzmi: niektóre typy zapytań (np. Odległość) nie mają sensu w tym "nierealizowanym" świecie. Twoje jednostki są w stopniach dziesiętnych, a prosty pomiar x stopni dziesiętnych jest różną rzeczywistą odległością w zależności od tego, gdzie jesteś na planecie.

W powyższym przykładzie ktoś używa epsg:32661, ponieważ wierzy, że da to większą dokładność w przypadku, gdy pracują. Jeśli Twoje dane znajdują się w określonym obszarze globu, możesz wybrać rzut, który jest dokładny dla tego obszaru. Jeśli rozciąga się na cały glob, musisz wybrać projekcję, która "ok" dla twoich potrzeb.

Teraz na szczęście PostGIS ma kilka sposobów na ułatwienie tego. Na odległość można po prostu użyć funkcji st_distance_sphere, która, jak można się domyślić, zakłada, że ​​Ziemia jest kulą. Lub bardziej dokładny st_distance_spheroid. Korzystanie z nich nie wymaga ponownego projektowania i prawdopodobnie będzie w porządku dla zapytań odległościowych, z wyjątkiem przypadków skrajnych. Nowsze wersje PostGIS pozwalają również na użycie st_distance_spheroid dla zapytań odległościowych, przechowywanie danych w kolumnach geograficznych lub przekształcenie ich w lokalną projekcję (podczas przechowywania lub w locie, w zależności od wymagania).

+0

Głosuję na to z tego powodu: "Odpowiedź jest taka, że ​​niektóre rodzaje zapytań (takie jak odległość) nie mają sensu w tym świecie" nieprojektowanym ". Twoje jednostki mają dziesiętne stopnie, a prosty pomiar x dziesiętne stopnie jest różną rzeczywistą odległością w zależności od tego, gdzie jesteś na planecie. " W "nieudokumentowanym" słowie jest pojęcie dystansu, tutaj jest dla sfery: (http://en.wikipedia.org/wiki/Great-circle_distance) to trochę trudniej obliczyć. Jeśli chodzi o obliczanie odległości we współrzędnych lat/lon, to nie jest to problem w postgis http://postgis.net/docs/ST_Distance.html –

+0

Punkt wyjściowy - powinienem był zauważyć odległość, jak w prostej różnicy współrzędnych. Ale twój komentarz również wprowadza w błąd: Obliczony przez ciebie dystans jest formą rzutowania latka/lng (na kulę w tym przypadku), dzięki czemu możesz uzyskać "rozsądną" odpowiedź na odległość. Ale wciąż się wyświetla. I podczas gdy PostGIS może zrobić to pod maską dla ciebie z geograficznymi współrzędnymi, st_distance spowoduje dezorientację (na przykład prostą różnicę wyników), jeśli użyjesz na przykład epsg: 4326 z kolumnami geometrii. – jlivni

+0

To nie wprowadza w błąd i nie twierdzę, że "lat/lon jest rzutowany na sferę" Mówię, że w sferze istnieje pojęcie odległości i nie trzeba rzutować kuli, aby ją poczuć . lat/lon jest po prostu układem współrzędnych opisującym punkty na kuli. Nie mają one nic wspólnego z projekcjami, które są sposobem na przekształcenie N-wymiarowej przestrzeni (kuli w naszym przypadku) w inną przestrzenię o wymiarach M (zwykle jest to płaszczyzna kartezjańska 2), gdzie pojęcie odległości jest bardziej intuicyjne i jasne. Projekcja jest wynikiem przekształcenia z jednego układu współrzędnych na inny. –

1

Spójrz na to pytanie: How do you know what SRID to use for a shp file?

SRID jest po prostu sposobem na przechowywanie WKT wewnątrz bazy danych (można zauważyć, że altough przechowywać łac/długie punkty, preferowany przechowywanie jest długa ciąg z cyframi i dużymi literami).

Numer SRID lub EPSG może być inny dla kraju/stanu/... chociaż niektóre z nich są bardzo popularne, szczególnie wymienione przez Ciebie. Jeśli potrzebujesz szczegółowych informacji, w jakim obszarze używasz SRID, istnieje database for handling that.

Wewnątrz bazy danych znajduje się tabela spatial_ref_sys zawierająca informacje o SRID PostGIS.

+0

Tak jak lubię mówić "lepsze prawdziwe zamieszanie niż fałszywa jasność". W każdym razie moje zamieszanie wynikało z faktu, że przykład na tej stronie: http://unserializableone.blogspot.com/2007/02/using-postgis-to-find-points-of.html przekonwertował 4269 na 32661 za każdym razem, gdy robił pytanie. Czy ma to związek z tym, że w końcu może mieć jakieś ważne dane, które są 32661, dlatego zawsze konwertuje je do tego systemu? W przeciwnym razie 4269 byłoby w porządku? – avatar

+0

@itgorilla To zależy od sposobu, w jaki je wypiszesz. przez większość czasu biblioteka JS obsługuje ekran (np. Mapy Google, OSM, ...) i ta biblioteka musi umieścić linie, punkty, ... gdzieś i jeśli podstawowe korekty są potrzebne w 4269, niż musi to zrobić z szacunkiem. Nie jestem jednak ekspertem, więc może ktoś ma lepsze wytłumaczenie tego. – DrColossos

+0

Jak widać, próbuję to rozgryźć samemu :). W każdym razie myślę, że im więcej czytam i pytam, zaczynam dostrzegać, jak to działa. Doceniam twoją pomoc. – avatar

Powiązane problemy