QGIS oblicza promień łuku do atrybutów


9

Mam zainstalowany QGIS 2.18.16. Mój problem polega na tym, jak obliczyć promień łuku / cechy łuku (linii)? Linie pochodzą z pliku .dgn, który przeczytałem w FME i napisałem do PostGis DB. Utworzyłem klucze podstawowe itp., A tabela jest w pełni edytowalna. Pomyślnie obliczyłem długości łuków, ale nie mogę dowiedzieć się, jak obliczyć promień dla tych krzywych. To ( https://www.mathopenref.com/arcradius.html ) może dać jakiś pomysł po stronie matematyki, chociaż nie mogę wymyślić, jak go używać w kalkulatorze QGIS. Więc muszę obliczyć „R” dla wszystkich linii, które mam w DB.

Poniżej znajduje się przykład. Moje dane mają łuki / krzywe na innej tabeli niż „normalne” polilinie.

wprowadź opis zdjęcia tutaj


Kiedy klikam łuk za pomocą narzędzia Identyfikacja, jednym z wymienionych atrybutów pochodnych jest „najbliższy promień wierzchołka”. Dlatego nie ma potrzeby obliczania promienia, wystarczy dowiedzieć się, jak uzyskać dostęp do tej właściwości w kalkulatorze polowym. Lub po prostu skopiuj go z narzędzia do identyfikacji.
— csk

Można również wyświetlić właściwości wierzchołka, gdy warstwa znajduje się w trybie edycji, wybierając wierzchołki za pomocą narzędzia Węzeł. Następnie współrzędne wierzchołków (x, y, r) są wyświetlane w panelu Edytora wierzchołków.
— csk

Miło wiedzieć, że można przynajmniej zobaczyć promień za pomocą narzędzia do identyfikacji. Przy niewielu łukach kopiowanie i wklejanie byłoby opcją, ale planuję użyć tego do wszystkich danych, które mam, które mają zbyt wiele funkcji łuku, aby można je było wykonać ręcznie. : /
— Sisuaski,

Przeszukiwałem trochę i wydaje się, że niewiele osób używa funkcji ciągów kołowych w QGIS, więc nie ma gotowego narzędzia ani funkcji w kalkulatorze polowym. Może być konieczne zdefiniowanie niestandardowej funkcji języka Python. Jeśli chcesz pójść tą drogą, dodaj znacznik Pygis do swojego pytania.
— csk

Ile masz wierzchołków dla elementu? Co widzisz Vertex Editorpo kliknięciu Node Tool?
— Marco

Odpowiedzi:


6

Następują lekko przetestowane formuły, więc zachowaj ostrożność. Ale podążając wraz z przykładem tutaj: https://www.mathopenref.com/arcradius.html wprowadź opis zdjęcia tutaj

Jeśli twoje okrągłe łuki mają wierzchołek w środkowym punkcie wzdłuż łuku (co mówię to x1, y1 na rysunku), możesz użyć go wraz z punktami początkowym i końcowym do obliczenia długości cięciwy „ W ” i wysokości „ h ”, aby uzyskać promień „R” przy użyciu następującego wzoru:

wprowadź opis zdjęcia tutaj

i mówiąc

wprowadź opis zdjęcia tutaj

W =

sqrt(
     ( $x_at(-1) - $x_at(0) )^2 +
     ( $y_at(-1) - $y_at(0) )^2
    )

i

wprowadź opis zdjęcia tutaj

H =

sqrt(
    ( $x_at(1) - ( $x_at(-1) + $x_at(0) )/2 )^2
    + ( $y_at(1) - ( $y_at(-1) + $y_at(0) )/2 )^2
)

w oknie dialogowym Wyrażenie kalkulatora pola będziesz mieć takie długie równanie do obliczenia promienia:

wprowadź opis zdjęcia tutaj

R =

sqrt( 
    ( $x_at(1) - ($x_at(-1) + $x_at(0) )/2 )^2 
    + ( $y_at(1) - ($y_at(-1) + $y_at(0))/2 )^2
     ) /2
+
(   ( $x_at(-1) - $x_at(0) )^2 )  + 
    ( $y_at(-1) - $y_at(0) )^2 )  )
/ ( 8 * sqrt(
            ( ($x_at(1) - ($x_at(-1) + $x_at(0) )/2 )^2
            + ( $y_at(1) - ($y_at(-1) + $y_at(0) )/2 )^2
             )
   )

1
W LaTe X $$W= \sqrt {(x_{-1} - x_0)^2 +(y_{-1}-y_0)^2}$$ $$H = \sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}$$ i $$R = \frac {\sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}} {2} + \frac {(x_{-1} - x_0)^2 +(y_{-1}-y_0)^2} {8 \sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}}$$
— Marco

Bardzo dobre! Nie wyobrażałem sobie, jak uzyskać dostęp do wierzchołków. Czy jest to możliwe w PostGIS?
— Marco

1
Marco, uważam, że możliwe jest wydobycie dowolnego wierzchołka, którego szukasz. Zobacz link tutaj: postgis.net/docs/ST_PointN.html . Dziękujemy za najlepsze uzupełnienia i zmiany formuł.
— cm1

Jest to najbardziej pomocna odpowiedź, na którą czekam, aż programiści dodadzą przycisk „łatwego obliczenia promienia”. Teraz ja (i prawdopodobnie także inni) mam przynajmniej jakiś sposób na wyodrębnienie promienia. :) Jeszcze tego nie testowałem, ale zrobię to za kilka dni, kiedy będę miał wystarczająco dużo czasu. Bardzo dziękuję za pomoc!
— Sisuaski

1

Co z wyodrębnieniem promienia podczas wyodrębniania danych za pomocą FME? Tam masz transformator ArcPropertyExtractor, który powinien dać ci wartości promienia w atrybutach gotowych do ustawienia w DB PostGIS


Byłby to jeden z możliwych sposobów postępowania, dobry sposób na obsługę wszystkich danych. Mój problem polega na tym, że w mojej organizacji nie ma wystarczającej liczby użytkowników FME i muszę maksymalnie ułatwić ten proces. Oznacza to, że cały proces, w tym łuki, obszary, linie itp., Powinien być możliwy do wykonania za pomocą Qgis. Muszę zaktualizować promień łuku do nowych obiektów, co muszę zrobić z Qgis. Dziękuję za odpowiedź, na razie będę aktualizować atrybuty promienia za pomocą FME, ale mam nadzieję, że będzie sposób, aby to zrobić za pomocą QGIS.
— Sisuaski
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.