Forum QGIS

Pełna wersja: Zlecę napisanie skryptu dla QGIS do automatycznej edycji wielu plików SHP
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam,

Potrzebuję zedytować dość sporą ilość danych na potrzeby projektu, który robię w wolnym czasie.
Manualna edycja sporej ilości plików jest dość czasochłonna i często kończy się zawieszeniem programu ze względu na dość sporą ilość danych.

Co powinna robić wtyczka/skrypt:

Powinna szukac plikow SHP w podanej lokalizacji (folder) i analizowac tresc w oparciu o atrybuty FCLASS. W zaleznosci od jego nazwy usuwac obiekt, lub zmieniac opis pola NAME.

Przykladowo zalaczam plik z danymi i otwarta tabele atrubutow (screen) w programie.

W tym wypadku chcialbym aby usunite zostaly obiekty, ktorych
FCLASS =
teritary
service
footway
living_street
track
pedestrian

Pozostale primary,secondary,motorway itd. powinny miec NAME = {698E20FC-1C69-4876-AF34-A6E9F531CCA5}.

Chciałbym też, aby w zależności od atrybutu FCLASS była możliwość zrobienia z polygonu samych LINE po jego krawędziach.

Załączam też próbkę plików.
https://www.sendspace.com/file/wzhj39

Wynagrodzenie i szczegóły do ustalenia na priv.

Pozdrawiam,
Mateusz
Nie wiem jak zrobić taki skrypt/wtyczkę, ale może po prostu połączyć te .shp w jeden i potem:
1. Zaznaczyć wyrażeniem
Kod:
( "fclass"  IN  'teritary'  , 'service' , 'footway'  , 'living_street' , 'track' , 'pedestrian')
. Alternatywnie z narzędzi geoporocesingu select by expression i to samo zapytanie w trybie wsadowym.
2. Usunąć zaznaczone obiekty.
3. I teraz w zależności od tego co masz na myśli
A) Jeżeli NAME każdego pozostałego obiektu ma być {698E20FC-1C69-4876-AF34-A6E9F531CCA5} to w kalkulatorze pól aktualizujesz pole NAME i w formule wpisujesz
Kod:
'{698E20FC-1C69-4876-AF34-A6E9F531CCA5}'
B) Jeżeli NAME każdego pozostałego obiektu ma być unikalny GUID to w kalkulatorze pól aktualizujesz pole NAME i w formule wpisujesz
Kod:
uuid()
C) Jeżeli NAME wybranych obiektów ma zostać zmienione to w kalkulatorze pól aktualizujesz pole NAME i w formule wpisujesz
Kod:
CASE WHEN  "fclass" IN ('primary' , 'secondary' , 'motorway' ) THEN (tutaj wstaw kod z przypadku A lub B) END

O co chodzi ze zrobieniem z poligonów linii to za bardzo nie rozumiem, w przykładzie są same linie. Jak masz też warstwę poligonową i tylko niektóre z obiektów mają zostać zapisane jako linie to pożądane obiekty zaznaczasz wyrażeniem, zapisujesz do nowej warstwy i zmieniasz na linie. Jak masz tych warstw więcej to masz dwa wyjścia (jak i wcześniej): albo łączysz warstwy w jedną albo korzystaj z narzędzi geoprocesingu i używaj "Uruchom w trybie wsadowym" (zaznaczenie wyrażeniem, zapisywanie zaznaczonych i zamiana poligonów na linie można tak uruchomić).
(25-04-2017, 18:25)tomalos napisał(a): [ -> ]
Kod:
( "fclass"  IN  'teritary'  , 'service' , 'footway'  , 'living_street' , 'track' , 'pedestrian')

...albo po prostu PRAWYM NA KOMASOWANĄ SHAPĘ => FILTER po czym:

"fclass" NOT IN ('teritary' , 'service' , 'footway' , 'living_street' , 'track' , 'pedestrian')

a zostaną same "dobre" obiekty.
(25-04-2017, 10:49)Matteusz napisał(a): [ -> ]Witam,

Potrzebuję zedytować dość sporą ilość danych na potrzeby projektu, który robię w wolnym czasie.
Manualna edycja sporej ilości plików jest dość czasochłonna i często kończy się zawieszeniem programu ze względu na dość sporą ilość danych.

Co powinna robić wtyczka/skrypt:

Powinna szukac plikow SHP w podanej lokalizacji (folder) i analizowac tresc w oparciu o atrybuty FCLASS. W zaleznosci od jego nazwy usuwac obiekt, lub zmieniac opis pola NAME.

Przykladowo zalaczam plik z danymi i otwarta tabele atrubutow (screen) w programie.

W tym wypadku chcialbym aby usunite zostaly obiekty, ktorych
FCLASS =
teritary
service
footway
living_street
track
pedestrian

Pozostale primary,secondary,motorway itd. powinny miec NAME = {698E20FC-1C69-4876-AF34-A6E9F531CCA5}.

Chciałbym też, aby w zależności od atrybutu FCLASS była możliwość zrobienia z polygonu samych LINE po jego krawędziach.

Załączam też próbkę plików.
https://www.sendspace.com/file/wzhj39

Wynagrodzenie i szczegóły do ustalenia na priv.

Pozdrawiam,
Mateusz

Cześć, domyślam się, że dane które chcesz przetworzyć to OSM. Mogę napisać taką wtyczkę. Jeżeli jesteś zainteresowany to napisz na PW. Adrian