Mam wektor wielokąta i chcę szybko osiągnąć środek ciężkości tego wielokąta w celu wstawienia do dokumentu tekstowego. Pracuję z QGIS. Przeszukałem inne pytania i chociaż niektóre są nieco bliżej, nie dość odpowiadają na moje pytanie.
Idealnie współrzędne środka ciężkości znajdowałyby się w tabeli atrybutów wielokąta, a ja mogłem po prostu skopiować i wkleić współrzędne.
Nie chcę tworzyć osobnego pliku wektora punktowego, który reprezentuje środek ciężkości, a następnie znajdź te współrzędne, a następnie skopiuj je i wklej.
qgis
attribute-table
centroids
David
źródło
źródło
Odpowiedzi:
Środek ciężkości jest z definicji warstwą punktową, a nie wielokątem. Dlatego musisz utworzyć nową warstwę, która jest łatwa jak ciasto w QGIS 1.8 i wyższych wersjach.
Następnie można wykonać połączenie przestrzenne, aby dodać kolumny wielokątów do wielokątów i ponownie usunąć warstwę punktową.
źródło
Naprawdę, utworzenie nowego pliku kształtu jest jedną z najłatwiejszych opcji. Nie trzeba jednak kopiować i wklejać współrzędnych. Zrób to:
Alternatywnie będziesz musiał zaimportować swoje dane do PostGIS, a następnie iterować po wielokątach, używając funkcji ST_Centroid i zapisać wynik w nowym polu. Praca jest prawie taka sama, ale druga opcja oznacza, że nie masz osobnego pliku punktów centroidów.
źródło
Bardziej solidne soulution do odpowiedzi Mike'a:
long = toreal(regexp_substr(geom_to_wkt(centroid($geometry)), '(-?\\d+\\.?\\d*) -?\\d+\\.?\\d*')) lat = toreal(regexp_substr(geom_to_wkt(centroid($geometry)), '-?\\d+\\.?\\d* (-?\\d+\\.?\\d*)'))
źródło
A może skorzystasz z tego w kalkulatorze polowym 2.2?
Długie pole = substr (geomToWKT (centroid (geometria $)), 7, 12)
Pole lat = substr (geomToWKT (centroid (geometria $)), strpos (geomToWKT (centroid (geometria $)), '') +2, 12)
Wydaje się, że jest to rozwiązane w 2.6 z opcją xmin xmin (centroid (geometria $))
źródło
Właśnie natknąłem się na ten post prawie 5 lat później (!), Ale oto, co robię, aby obliczyć centroidy wielokątów w wersji 2.18.14:
źródło
Powiąż tabelę punktów środka ciężkości z tabelą wielokątów, a następnie umieść współrzędne z nazwą i kształtem wielokąta. Wieloboki same w sobie nie mają jednego łuku
źródło
Znalazłem się w tym poście i trudno było go śledzić, sugerowano aktualizację:
Uwaga: To obliczy szerokość i długość geograficzną we współrzędnych projekcji (które mogą być metrami). Jeśli chcesz współrzędne w stopniach dziesiętnych (zakładam, że tak robisz lub są one w większości niezrozumiałe), najpierw zapisz warstwę w tym CRS: EPSG: 4326, WGS 84.
źródło
lon = ToReal (regexp_substr (geomToWKT (centroid ($ geometry)), '([\ s]')) lat = ToReal (regexp_substr (geomToWKT (centroid ($ geometria)), '\ s [)]'))
źródło