Mam następującą warstwę używającą SRID 27700 w Postgis:
Jest to każdy region administracyjny w Wielkiej Brytanii i (jak widać z grupowania kolorów) każdy z nich ma pole tekstowe określające region, w którym się znajduje.
Chciałbym zrobić większe wielokąty hrabstwa z mniejszych w danym hrabstwie, więc EG na powyższym zdjęciu wszystkie wielokąty w kolorze turkusowym utworzyłyby jeden duży wielokąt z pojedynczego zewnętrznego pierścienia, który zawiera wszystkie bieguny w tym kolor, podobnie jak wszystkie fioletowe, brązowe, różowe, szare itp. powinny wszystkie tworzyć jeden wielokąt.
Próbowałem już:
insert into parishesmerged (geometry)
select astext(multi(ST_Union(the_geom))) as the_geom from parishes
group by county_name
Ale ciągle generuje uszkodzone geometrie, które mam duże problemy z dalszym przetwarzaniem.
Próbuję stworzyć prostszą mapę na poziomie hrabstwa z głównymi obszarami wyjściowymi w.
Żadne rozwiązania nie muszą też być w Postgis, mam zainstalowany pełny stos OS4Geo, najnowszą wersję QGis i więcej narzędzi, niż mogę sobie wyobrazić.
Jedyne rzeczy, których nie mam, to duzi chłopcy, tacy jak ArcGis (chociaż mogę gdzieś leżeć gdzieś w pobliżu Stare Mapinfo)
Dla przypomnienia zestaw danych, który próbuję utworzyć, ma towarzyszyć książce GIS, którą piszę, skierowanej do programistów .NET, którzy chcą pisać aplikacje GIS przy użyciu .NET
Po wypróbowaniu poniższych sugestii najlepiej działało rozwiązanie „Paul Ramseys”.
Mam teraz ładny, uproszczony plik hrabstw i dzielnic, który jest po prostu wystarczająco prosty dla mojej książki, ale wystarczająco skomplikowany, aby umożliwić mi zademonstrowanie ciekawego geograficznego przestrzennego SQL.
Chociaż ostatecznie rozwiązanie Paula było dla mnie skuteczne, skorzystałem również z innych odpowiedzi, na przykład w celu uproszczenia mapy wielokątów i dalszego zmniejszenia złożoności.
Na rzeczy, którą zaobserwowałem, robiąc to, chociaż ST_Collect jest rzeczywiście szybszy niż ST_Union, biegnij za biegiem, ale to on był głównie odpowiedzialny za złamane geometrie. Domyślam się, że wzrost prędkości jest uzyskiwany kosztem mniejszej dokładności w funkcji rdzenia.
astext(multi())
części? Po prostu odchodzę od tego, co widzę w innych przykładach rozwiązania PostGIS.Odpowiedzi:
ST_Union działałby, ale praca na linii prawie na pewno nie jest czysta. Tak więc granice twoich małych rzeczy nie wszystko idealnie się podoba. Możesz delikatnie przyciągnąć je do siatki, aby spróbować zwiększyć szanse na wyrównanie wierzchołków, ale założę się, że nadal będziesz mieć kilka przypadków, które nie działają. Albo będą poza tolerancją, albo, co bardziej prawdopodobne, będą miejsca, w których wierzchołki nie zostaną sparowane, więc po jednej stronie jest linia, a po drugiej wierzchołek.
Jeśli masz PostGIS 2.0, zbudowanie struktury topologicznej z tolerancją może doprowadzić do odpowiedzi, której szukasz, jeśli masz trochę szczęścia.
źródło
Incorrect parameter count in the call to native function 'ST_Union'
pojawia i nie wiem, czy to ograniczenie MySQL.Mówisz, że trzeba „... uformować jeden duży wielokąt z pojedynczego zewnętrznego pierścienia, który zawiera wszystkie polisy…”. Zrób to ST_ExteriorRing,
Możesz użyć ST_Union (), zgodnie z sugestią, lub przetestować za pomocą ST_Collection ().
UWAGI: aby uniknąć małych krzywych lub „złamanych geometrii”, możesz użyć st_convexhull i / lub ST_Simplify dla każdej geom,
i sprawdź swoje geometrie,
źródło
Funkcja ST_Collect jest funkcją „agregującą” w terminologii PostgreSQL
„
SELECT ST_Collect(GEOM) FROM GEOMTABLE GROUP BY ATTRCOLUMN
” zwróci osobną GEOMETRYKOLEKCJĘ dla każdej odrębnej wartości ATTRCOLUMhttp://postgis.net/docs/ST_Collect.html
Uwaga: ST_Collect jest znacznie szybszy niż ST_Union
źródło
Z twojego pytania zakładam, że używasz produktu linii granicznej Ordnance Survey. W takim przypadku zawiera on już zestaw danych na poziomie hrabstwa, więc nie trzeba próbować go generować z obszarów parafialnych niższego poziomu.
Jeśli nie używasz Boundary-Line, radzę zrobić to, ponieważ jest bezpłatne na licencji OS OpenData i ma poziom hrabstwa jako plik kształtu, który można załadować bezpośrednio do PostGIS.
źródło