Używam PostGIS 1.5.2 z geometriami w SRID: 900913. Muszę utworzyć koła, używając listy punktów jako środka, o promieniu 600 kilometrów. Korzystam z tego zapytania:
INSERT INTO circles (geom) (
SELECT ST_Buffer(point, 600000, 'quad_segs=8')
FROM points
);
Ale utworzone koła nie mają promienia 600 kilometrów (promień jest bliski tej długości, ale nie dokładnie).
Czy istnieją inne metody tworzenia kręgów w PostGIS?
UWAGA: Przedstawione informacje pochodzą z Hiszpanii. Prawidłowa projekcja to 4326, ale klient używa rastrów Google, więc przechowuję dane w 900913, aby uniknąć ponownych rzutów i zwiększyć wydajność.
postgis
postgis-1.5
angelcervera
źródło
źródło
SELECT ST_Distance( (select point from points where id = 7), (select point from points where id = 42));
zwrotu o ponad 100 km różnicy, przestrzegaj gmap-pedometer.com, ale jeśli przypuszczam, że ta długość jest poprawna, promień okręgu jest idealny. Ale ludzie używają pierwszej odległości jako promienia, bez odległości zwracanej przez st_distance. Czy możliwe jest przekształcenie pierwszej odległości na drugą?Odpowiedzi:
Spróbuj tego:
To zmienia się w geografię, a następnie wykorzystuje wbudowany wybór SRID do (ironicznie) odwrócenia z powrotem do geometrii, w której uruchamiany jest dobry bufor płaski, a następnie odwraca się. Problem z twoim podejściem w Mercator polega na tym, że Mercator nie zachowuje odległości. Zastosowanie bardziej odpowiedniej lokalnej projekcji daje lepsze wyniki, i tak dzieje się w powyższej metodzie.
źródło
Możesz zwiększyć wartość quad_seg, aby uzyskać dokładniejszy okrąg. Aby uzyskać prawdziwy okrąg, musisz pracować z zakrzywioną geometrią, ale nie wiem, jakie oprogramowanie może to pokazać.
Dokładność srida 90013 jest również bardzo zła, ponieważ jest to projekcja obejmująca cały świat.
Uzyskasz dokładniejszy wynik dzięki lokalnej projekcji.
źródło
To zależy od tego, gdzie tworzone są twoje kręgi. Czy znajdują się w pobliżu równika lub bliżej biegunów?
Spójrz na tę mapę . Czy uważasz, że Antartica lub Grenlandia są tak duże? To jest projekcja, której używasz, prawda?
Polecam szybkie przeczytanie tego dokumentu USGS na temat rzutów , w szczególności poniższej tabeli, która daje szybki obraz tego, które rzuty są odpowiednie do czego.
A po tym wszystkim myślę, że powinienem w końcu odpowiedzieć na twoje pytanie :)
To, co powiedział Nicklas, było dobrą radą. Czy dla Twojej okolicy jest jakaś prognoza, która działałaby lepiej?
W przeciwnym razie warto przyjrzeć się nowemu typowi Geografii PostGIS . Niemniej jednak najbardziej odpowiednia odpowiedź zależy od tego, gdzie znajdują się Twoje dane.
AKTUALIZACJA: Odkąd wiemy, że Twoje dane znajdują się w Hiszpanii, czy zastanawiałeś się nad przechowywaniem ich w lokalnej projekcji, takiej jak UTM Zone 31N , wykonując swoje operacje, a następnie rzutując je z powrotem do Google Web Mercator?
źródło
Możesz użyć nowego typu geometrii SQL / MM część 3 CIRCULARSTRING i / lub CURVEPOLYGON.
Należy jednak pamiętać, że obsługa tego typu jest ograniczona, zarówno w przypadku funkcji wewnętrznych, jak i programów zewnętrznych. Możesz użyć ST_CurveToLine, aby pomóc w wizualizacji.
Co więcej, jest to nieco odstręczające (od PostGIS 2.0 svn), które
SELECT ST_Area('CURVEPOLYGON(CIRCULARSTRING(2 1, 1 2, 0 1, 1 0, 2 1))'::geometry)
jest jedynie przybliżonym przybliżeniem π . (Porównaj 3.14033115695475 z 3.14159265358979 odpi()
).źródło