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.