Jacek S.

Jacek S. Technical Manager,
OX2

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Mam kilkanaście mapek topograficznych, z których chce wyciągnąć lasy i zabudowę. Niestety, nie mam pojęcia jak się do tego zabrać - mapy są w formacie 24bit PNG - próbowałem jakoś je reklasyfikować w ArcMap, ale problem w tym że nie mogę znaleźć sposobu na ominięcie zapisu RGB (3 wartości), a przy konwersji niestety zmieniają się indeksy kolorów.

Wie ktoś może, jak przerobić te pliki tak, by każdy po reklasyfikacji miał takie same kolory i można było je bez problemu zwektoryzować?Jacek S. edytował(a) ten post dnia 07.02.12 o godzinie 12:48

konto usunięte

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Za pomocą skryptu można wyciągnąć jedno pasmo (na raz dla wszystkich map), dla ArcGIS 10 będzie to wyglądać tak:

import arcpy, os
from arcpy import env

# parametry wejściowe, tu trzeba wpisac folder, w ktorym sa rastry oraz folder, do ktorego zapiszemy wynik

arcpy.env.workspace = "C:/..."
outworkspace = "C:/..."

# numer pasma rgb - edit: trzeba było podać w nawiasach
bandno = "1"

rasterList = arcpy.ListRasters("*", "")

for raster in rasterList:
inraster = raster + "/Band_" + bandno
outraster = outworkspace + "/" + raster + "_b" + bandno + ".tif"arcpy.CopyRaster_management(inraster,outraster,"DEFAULTS","0","9","","","8_BIT_UNSIGNED")

Jeżeli już będzie się mieć rastry zapisane w formacie 8 bitowym, to można je również za pomocą skryptu zreklasyfikować - ale sadzę, że to nie wyjdzie dobrze. Odcienie szarości będą zapewne różne dla kolejnych map.

rasterList = arcpy.ListRasters("*", "")

for raster in rasterList:

reclassField = "Value"
#przykladowa reklasyfikacja 0 na 1 i 255 na 0
remap = RemapValue([[0, 1], [255, 0],])

arcpy.CheckOutExtension("Spatial")

outReclassify = Reclassify(raster, reclassField, remap, "NODATA")

outraster = outworkspace + "/" + raster + "_reklas" + ".tif"

outReclassify.save(outraster)

Jeżeli jest jakiś prostszy sposób, to chętnie go poznam.

[edit] był mały błąd - numer pasma trzeba podać w nawiasie, teraz działa (u mnie)Marcin Szwagrzyk edytował(a) ten post dnia 07.02.12 o godzinie 20:11
Jacek S.

Jacek S. Technical Manager,
OX2

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Właśnie chyba nie ma ;|
Wszystko rozbija się o to, że to są pliki 24 bitowe i nijak nie da się tego do Map Algebra podpiąć. Przy konwersji do 8bit każda barwa dostaje inny Color Index. Widocznie, muszę się zainteresować Pythonem, bo ArcGis przestał spełniać moje oczekiwania przez zwykły interfejs :)

Skrypt sprawdzę i zobaczę co z tego wyjdzie, próbowałem przez Model Builder wyciągnąć kanały RGB no i dupa. Iteratory nie uwzgledniają kanałów w rastrze :|

--

[EDIT] Ten skrypt co mi dałeś nie chciał działać - niestety mam nikłe pojęcie o Pythonie. Znalazłem po necie inny, który po zaadaptowaniu zadziałał. Tylko jak przy arcpy.CopyRaster_management zmusić go, by nie generował piramid? Mi są zupełnie niepotrzebnie, a przedłuża to cały proces :|Jacek S. edytował(a) ten post dnia 07.02.12 o godzinie 16:02
Marcin Kułak

Marcin Kułak Specjalista GIS,
Państwowy Instytut
Geologiczny

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Jacek S.:
Mam kilkanaście mapek topograficznych, z których chce wyciągnąć lasy i zabudowę.
...
można było je bez problemu zwektoryzować?

A może ja podejdę do problemu od innej strony?
Skoro masz ochotę zwektoryzować automatycznie zabudowę i lasy z map topograficznych, to może lepiej zakupić diapozytywy wydawnicze odpowiednich arkuszy? Płaci się za udostępnienie godła, dla 10k to 20pln, bez względu na to czy kupujesz geotiffa z mapą, czy geotiffa i diapozytywy. Jedyny problem to że będziesz je musiał sobie przyciąć, wyczyścić i skalibrować, ale masz od razu 1-bitowy raster gotowy do automatycznej wektoryzacji. Dla różnych map są różne diapozytywy - zerknij na stronę CODGiKu.

konto usunięte

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Jak wyglądają takie diapozytywy? Są rozdzielone na warstwy? Na czym polega przewaga takiego diapozytywu (jeśli chodzi o automatyczną wektoryzaję) w stosunku do zwykłego rastra mapy topograficznej?

Kiedyś tam wyciągliśmy z kolegą zabudowę z mapy topo (10k) i -pomijając dziury wycięte przez napisy i inne obiekty nachodzące na budynki- wyszła trochę koślawa, ale całkiem przyzwoita warstwa wektorowa.

Pomysł z tymi diapozytywami ciekawy, chętnie dowiem się więcej.

[EDIT]
Na rastrze w skali szarości (wyciągnięte jedno pasmo) budynki mają taką samą wartość piksela, jak poziomice i coś tam jeszcze, więc się ich w ten sposób nie wyodrębni z reszty. Trzeba by pewnie stworzyć raster 8 bitowy, z wykorzystaniem wszystkich pasm, i z tego wyselekcjonować zabudowę...Marcin Szwagrzyk edytował(a) ten post dnia 07.02.12 o godzinie 20:37
Dominik Mikiewicz

Dominik Mikiewicz maps made easy,
www.cartomatic.pl ||
cartoninjas.net

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

To może ja z innej beczki - klasyfikacja nadzorowana...

Fakt, że jeżeli poszczególne arkusze są nie wyrównane kolorystycznie, to będzie trzeba każdy oddzielnie, ale... ;-)

Multispec lubi duuużo kanałów, jak nazwa wskazuje. Głowy sobie nie dam uciąć, ale z tego co pamiętam ILWIS również ma narzędzia do klasyfikacji nadzorowanej.

konto usunięte

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Dominik Mikiewicz:
ILWIS również ma
narzędzia do klasyfikacji nadzorowanej.

Tak ma i działa całkiem, całkiem. Robiłem porównanie z Erdasem i co prawda wyniki wyszły w granicach błędy pomiaru, ale klasyfikacja z ILWISa była lepsza.

Weryfikacja względem map lotniczych, a klasyfikacja na Landsacie.

Uważam więc, że ten pomysł co do mapy rastrowej jest całkiem sensowny.
Mateusz K.

Mateusz K. Project manager and
python programmer

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

W Multispec, dla klasyfikacji nadzorowanej, można wyznaczyć poligony o dowolnym kształcie, a w ILWIS tylko prostokąty z ograniczoną ilością pixeli (przynajmniej mnie nie udało się wyznaczyć nieprostokątów). Lepsze wyniki osiągałem w Multispec

konto usunięte

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

[EDIT] Ten skrypt co mi dałeś nie chciał działać - niestety mam nikłe pojęcie o Pythonie. Znalazłem po necie inny, który po zaadaptowaniu zadziałał. Tylko jak przy arcpy.CopyRaster_management zmusić go, by nie generował piramid? Mi są zupełnie niepotrzebnie, a przedłuża to cały proces :|

arcpy.env.pyramid = "None"

konto usunięte

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Mateusz K.:
W Multispec, dla klasyfikacji nadzorowanej, można wyznaczyć poligony o dowolnym kształcie, a w ILWIS tylko prostokąty z ograniczoną ilością pixeli (przynajmniej mnie nie udało się wyznaczyć nieprostokątów). Lepsze wyniki osiągałem w Multispec


hmmm dzięki za info, nie znałem tego programu.
Jacek S.

Jacek S. Technical Manager,
OX2

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Tak, zakupić najłatwiej :) Tylko, że u mnie to nie wchodzi raczej w grę :(

Pomijając to co teraz robię, identyczny - 24 bitowy problem - miałem z mapami ściągniętymi z serwera WMS GDOŚ. Niby każdy obrazek taki sam, a jednak za każdym razem się dziwiłem, że Index Color inny.

W ogóle to dziwne, że w ArcGiSie nie ma większego wsparcia jeżeli chodzi o 24 bitowe pliki - chocby w konwersji na bardziej "zjadliwe" formaty. I trzeba robić na około ...

Btw. Co do klasyfikacji nadzorowanej - w sumie, robiłem kiedyś takową w ENVI dla map satelitarnych, nie pomyślałem żeby to tutaj zastosować. Problem wydawał mi się zbyt błahy :)Jacek S. edytował(a) ten post dnia 08.02.12 o godzinie 00:58
Marcin Kułak

Marcin Kułak Specjalista GIS,
Państwowy Instytut
Geologiczny

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Marcin Szwagrzyk:
Jak wyglądają takie diapozytywy? Są rozdzielone na warstwy? Na czym polega przewaga takiego diapozytywu (jeśli chodzi o automatyczną wektoryzaję) w stosunku do zwykłego rastra mapy topograficznej?

Marcin, na stronie CODGiKu, której link wrzuciłem masz przykłady jak wygląda taki raster diapozytywu. Przewaga jest taka, że jest on 1-bitowym tiffem (na stronie są chyba jpg), więc piksel ma wartość tylko biały albo czarny. Co pozwala zaprząc wektoryzację automatyczną (moduł ArcScan).
Marcin Kułak

Marcin Kułak Specjalista GIS,
Państwowy Instytut
Geologiczny

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Jacek S.:
Tak, zakupić najłatwiej :) Tylko, że u mnie to nie wchodzi raczej w grę :(

Jeśli masz jakiś projekt badawczy, to może jakieś współczynniki obniżające cenę wchodzę w grę?
Możesz też spróbować uderzyć do konkretnego WODGiKu - przepisy niby te same, ale czasem łatwiej przekonać kogoś, że jednak się kwalifikujesz pod konkretny współczynnik ;-)

konto usunięte

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Zależy, do czego ta warstwa jest potrzebna. Jak np do jakiejś wizualizacji w skali 10k, to wyciągnięcie kolorów z rastra, zamiana na wektor (wywalenie śmieci z automatu - np obiektów za małych na budynki czy też obiektów o absurdalnych wskaźnikach obwód/powierzchnia), w zupełności wystarczy.

Nadzorowana klasyfikacja i tak nie da jakiś super rezultatów - problemem będą pewnie napisy zachodzące na budynki (w miastach jest ich sporo) i inne obiekty przecinające budynki - np linie energetyczne. Chyba, że potraficie sobie z tym poradzić.

konto usunięte

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Skoro są to kolorowe 10k to w WODGiK albo CODGiK można dostać za relatywnie niewielkie pieniądze ich wersję wektorową. Może warto?

konto usunięte

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

W każdym razie, żeby pokazać, że się da (czy jest to opłacalne i sensowne, to inna sprawa).

Pierwszy obrazek - po wyciągnięciu pikseli o wartości odpowiadającej zabudowie mieszkaniowej (z mapy w skali szarości).

Drugi obrazek - po obróbce - usunięciu obiektów mniejszych niż 20 m2, zbuforowaniu o 2 m (bo obcięło trochę z brzegów) i zastosowaniu narzędzia simplify buildings

http://imageshack.us/f/195/zabudowag.jpg/Marcin Szwagrzyk edytował(a) ten post dnia 08.02.12 o godzinie 14:41
Jacek S.

Jacek S. Technical Manager,
OX2

Temat: Reklasyfikacja kilku rastrów wg jednego schematu

Projekt badawczy to niestety nie jest. Co prawda do pracy magisterskiej takie BDO próbowałem kiedyś pozyskac, ale jak mi zaśpiewali cenę (pomimo zniżek, obszar leżał niestety na styku akurat 4-rech kwadratów) stwierdziłem że dam sobię spokój i że aż tak to mi potrzebne nie jest.

A wracając do wektoryzacji: jeśli chodzi o zabudowę, to przecinanie przez linie nie jest akurat problemem u mnie - chodzi mi po prostu o lokalizację zabudowy do dalszych analiz (odległość). Ten pixel z obrysu (czyli 1,56 m) też sobie buforem można zrekompensować, a jakieś kawałki napisów i takie tam - usunąć automatycznie. Ostatecznie zrobiłem tak, że w ArcMapie porobiłem modele automatycznie wyciągające te 3 kanały, reklasyfikujące raster po danych wartościach pixeli R, G lub B(na razie wystarcza mi jeden kanał) i wektoryzujące go do poligonów. Dzięki wszystkim za pomoc :)Jacek S. edytował(a) ten post dnia 08.02.12 o godzinie 21:53

Następna dyskusja:

Dwie symbolizacje do jedneg...




Wyślij zaproszenie do