niedziela, lipca 26, 2009

Pobieranie map z serwerów ARS Geoportalu

[UAKTUALNIENIE 31.07.09 Wszystkie warstwy z ARS - parametry na dole strony]

W grudniu ubiegłego roku na blogu pojawił się post dotyczący ściągania danych z serwerów WMS Geoportalu, a następnie sklejaniu wielu plików w jedną dużą mapę. Do tego celu wykorzystany został program GDAL z pakietu narzędzi FWTools.

Spośród danych udostępnianych przez Geoportal jedynie część znajduje się na serwerach WMS, podczas gdy reszta jest na usłudze zwanej ARS (podobno jest to skrót od Advanced Raster Service). ARS opiera się podobnych zasadach co WMS-C/TMS tj. na udostępnianiu użytkownikowi gotowych, istniejących już fizycznie na serwerze, plików graficznych (cegiełek/kafelków ang. tiles) o ustalonych wymiarach (np. 256x256px) i zasięgu, uporządkowanych w katalogach lub o nazwach odpowiadających strukturze quad-tree.
Dla porównania zwykły WMS przy każdym żądaniu tworzy (renderuje) pliki graficzne od nowa np. ze źródłowych rastrów w GeoTiffach lub z bazy danych wektorowych. Ma to taką zaletę, że użytkownik może pobrać plik o niestandardowych wymiarach (np. 100x1234px) i dowolnie wybranym zasięgu (bbox). Wadą jest natomiast długi czas renderowania takiego obrazka po stronie serwera (samo przesyłanie trwa stosunkowo krótko i nie wymaga już takich zasobów).

O samej idei już kiedyś wspominałem (więcej na temat na stronach OSGeo), poniżej zaś konkretne rozwiązanie wykorzystane przez Geoportal (na przykładzie warstwy BDO):Pliki graficzne mają adres w postaci
http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=BDO&cs=EPSG2180&fileIDX=L0X0Y0.png
  • parametr service odpowiada za warstwę danych - oprócz BDO są to jeszcze NMT_CS, NMT_S, RASTER_TOPO, ORTOFOTO, VMAP, TBD
  • cs to odwzorowanie - EPSG:2180 to kod układu 1992
  • fileIDX - nazwa pliku, na którą składają się numer poziomu (L - level) oraz współrzędne X i Y (w układzie wsp. matematycznych) danej cegiełki
Na najmniej szczegółowym poziomie 0. Polska podzielona jest na 6 kwadratów: w lewym dolnym rogu (pokrywającym się z początkiem układu 1992) mamy współrzędne X0Y0 - teraz idąc w górę/prawo sąsiednie pliki będą miały Y/X większe o 1 - na przeciwległym (prawym górnym) rogu mamy X2Y1.
Na poziomie 1. cegiełek będzie już 24 (każda dzieli się na 4 na następnym poziomie): sposób numeracji jest podobny - zaczynamy od X0Y0 w lewym dolnym, kończymy natomiast na X5Y3 w prawym górnym rogu.
Żeby mieć jakieś powiązanie między wymiarami obrazka w pikselach i jego numeracją LXY a współrzędnymi kartograficznymi w układzie 1992 należałoby wprowadzić dodatkowy parametr, który można by nazwać LZTS (level zero tile size) czyli rozmiar pojedynczego kafelka na poziomie zerowym w metrach (lub stopniach w przypadku wsp. geograficznych). Dla BDO w Geoportalu wartość ta wynosi 409600m (ustalona metodą prób i błędów:).
Teraz już można bez problemów przeliczać ze współrzędnych 'tile'owych' na układ 1992 i na odwrót (zwykłe mnożenie i potęgowanie 2).

Po wstępie teoretycznym czas na wykorzystanie w praktyce :) Znowu posłuży nam do tego GDAL, który potrafi ściągać obrazki nie tylko z WMS, ale również z serwerów World Wind oraz TMS (a do takich należy ARS Geoportalu).
Komendy i ogólny sposób postępowania pozostają niemal identyczne jak w przypadku WMS, dlatego po szczegóły odsyłam do poprzedniego wpisu, zmienia się jedynie plik xml z parametrami serwisu. Gotowy xml znajduje się tutaj - geop_ars.xml, tutaj zaś strona ze wszystkimi opcjami jakie można zastosować.

Kilka wyjaśnień dot. pliku:
  • Service name - należy podać TMS
  • ServerUrl - należy podać wpisując w odp. miejscach zmienne odpowiadające za level oraz wsp. xy danego pliku (czyli tak http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=BDO&cs=EPSG2180&fileIDX=L${z}X${x}Y${y}.png)
  • DataWindow - współrzędne (w ukł. 92) narożników całego obszaru - zależą od LZTS oraz liczby kolumn i wierszy na poziomie 0. (tutaj mamy 409600 x 3 kolumny i 2 wiersze - stąd wartości 1228000 i 819200 w pliku)
  • TileLevel - liczba poziomów (leveli); trzeba ustalić samemu
  • TileCount - liczba cegiełek na poziomie 0.
  • YOrigin - początek i kierunek osi Y, bottom oznacza że zaczyna się w lewym dolnym rogu i skierowana jest ku górze
  • BlockSize - rozmiar pojedynczego obrazka w pikselach (dla Geoportalu 256)
  • BandsCount - liczba kanałów w pliku (4 dla png - RGB+Alpha i 3 dla jpg)
Przykładowe komendy:
gdal_translate -of PNG -projwin 620000 500000 660000 460000 tmp\geop_ars.xml tmp\wwa_ars4.png
gdal_translate -of PNG -outsize 768 512 tmp\geop_ars.xml tmp\polska_ars.png

Na koniec kilka uwag:
  • na wyższych levelach serwer zwraca błędne puste pliki png, co skutkuje błędami w GDAL - należy uważać przy tworzeniu map obejmujących cały kraj lub obszary przygraniczne
  • podany tu LZTS nie musi być wcale poprawny - co prawda sprawdzałem mapy z ARS na tle WMS i georeferencja się mniej więcej zgadzała, ale nie testowałem tego dokładnie
  • plik i wartości w nim użyte są dla warstwy BDO (być może zadziałają też dla NMT i TOPO), inne warstwy (w tym ortofoto) będą posiadać inne LZTS, inne liczby poziomów, inne liczby plików na poziomie 0. lub nawet inne formaty (jpg dla TOPO) - jakby ktoś miał czas i do tego doszedł, to niech się podzieli:)
[UAKTUALNIENIE 31.07.09]
Wartości parametrów dla wszystkich warstw dostępnych przez ARS:
Wystarczy wpisać je w odpowiednich miejscach w przykładowym pliku xml. Pozostałe parametry są takie same dla wszystkich warstw.
(Do ustalenia parametrów niezbędny okazał się dodatek do Firefoxa - Firebug. Polecam :)


PS W podobny sposób można pobierać też mapy z serwisów OpenStreetMap czy UMP_pcPL, ale to już zostawiam jako zadanie domowe...

98 komentarzy:

Anonimowy pisze...

Jak w tym GDAL-u zapisać obraz np w png, bo mi w exporcie nic nie wychodzi?
Jak stworzyć/zapisać współrzędne, które można jakoś (jakimś programem przełożyć na obsługiwane przez OziExplorer?

m_k pisze...

Co to znaczy "nic nie wychodzi"? Pojawia się jakiś błąd?
Przecież przykłady jakie podałem są właśnie dla PNG...

GDAL zapisuje georeferencję w pliku xml, który jest odczytywany przez ArcGis czy QGIS - nie wiem czy istnieją narzędzia do konwersji do Ozi, ale pewnie da się samemu stworzyć taki plik .map na podstawie tego co jest w xml.

Anonimowy pisze...

Porządna robota. Pogratulować;)

Anonimowy pisze...

Witam
nigdy wcześniej nie używałem GDAL-a. Pobrałem pakiet FWTools i zainstalowałem.
Mam teraz
1 FWTools Shell - jakis wiersz poleeń, konsola
2 OpenEV_FW. Gdy to włączam wyskakują 2 okna: Layers i okno OpenEV: View 1.

Mam więc pytania:
1. Gdzie mam open, import, skopiuj do, czy coś innego jeżeli chodzi o plik geop_ars.xml
2.czy polecenia należy zapisywać w tej niby konsoli, jeżeli tak to czy mapa będzie pobierała się w oknie OpenEV
3.w którym miejscu (folderze) zapisywane są georeferencje xml

Czytałem poniższy odnośnik
http://terraobserver.blogspot.com/2008/12/zabawy-z-geoportalem-cd.html

ale nie ma tutaj opisanego co, jak i gdzie dla niewiedzący i amatorów (póki co) jak ja.

Może znajdą się printscreeny?

Anonimowy pisze...

Polecenia wpisuje się do konsoli, wiec nalezy uruchomic FWTools Shell. Plik geop_ars.xml mozna umiescic w dowolnym folderze na dysku, trzeba pamietac jedynie zeby przy wywolywaniu polecenia wpisac do niego odpowiednia sciezke. Podobnie wyglada sprawa ze sciezka do pliku wynikowego.
Mapa nie bedzie sie pobierala w oknie OpenEV, jedynie w okienku konsoli bedzie wyswietlana informacja o postepie sciagania w procentach. Plik xml z georeferencja zapisany bedzie w tym samym katalogu co wynikowy plik z mapa.

Zatem przykladowa komenda wyglada tak:
gdal_translate -of PNG -projwin 620000 500000 660000 460000 "C:\jakis katalog\geop_ars.xml" "C:\tworzona\mapa.png"

Anonimowy pisze...

Hmmm, mam mały problem - wyskakuje mi następujący błąd:


C:\Program Files\FWTools2.3.0>gdal_translate -of PNG -outsize 768 512 tmp\ars.xm
l tmp\polska_ars.png
ERROR 1: GDALWMS: No mini-driver registered for 'TMS'.
GDALOpen failed - 1
GDALWMS: No mini-driver registered for 'TMS'.

m_k pisze...

Driver TMS działa w najowszej wersji FWTools (2.4.2)

Anonimowy pisze...

m_k skąd wziąłeś w tym przykładzie, który podałeś, czyli gdal_translate -of PNG -outsize 768 512 tmp\geop_ars.xml tmp\polska_ars.png wartości 768 i 512?

m_k pisze...

Bo jesli nie poda sie parametru -projwin, to GDAL domyslnie przyjmie obszar taki jak w xml (czyli cala Polska), a w xml obszar ten ma proporcje 3:2 (sa 3 kolumny i 2 wiersze na poziomie 0; rozmiar pojedynczego tile'a to 256px), wiec outsize tez powinien miec takie proporcje.

Łukasz Świtaj pisze...

Witam,

Czy mamy wpływ na to, z którego poziomu (tile level) GDAL pobiera dane? Konkretnie chodzi mi o to, że raz chcę mieć L1 dla VMAP, innym razem L2. Albo L1 dla TBD.

Dlaczego raz używamy parametru projwin, a innym razem outsize? Czy parametry te mają jakiś wpływ na tile level?

Z góry dziękuję i pozdrawiam.

pzak pisze...

Hej.

Dla TBD wartość 2 dla TileLevel (czyli levele: L0, L1 i L2) zgadza się na przykład dla Warszawy.
Ale dla przykładu w okolicach Bydgoszczy (i pewnie większej części Polski) mamy tylko levele: L0 i L1, więc ustawienie wartości TileLevel na 2 w tych przypadkach zwróci obrazek z napisem "Brak danych dla aktualnego powiększenia..".

Taki hint dla osób, które mają ten sam problem co miałem ja ;)

m_k pisze...

@Łukasz Świtaj
Projwin nie używa się jedynie w przypadku gdy chcemy ściągnąć mapę obejmującą obszar całej Polski, natomiast gdy nie poda się outsize, to GDAL zawsze będzie ściągał obrazki z najwyższego levelu. Więc jeśli chcesz ściągać konkretny level, to najlepiej ustaw odpowiednią wartość w pliku xml, a przy wywoływaniu komendy podaj jedynie projwin bez outsize.

Outsize ma wpływ na pobierany level - tak jak w przykładzie "gdal_translate -of PNG -outsize 768 512 tmp\geop_ars.xml tmp\polska_ars.png" pobierze level0, bo na tym levelu mamy 3x2 obrazki 256px (tu będzie odwzorowanie 1:1), natomiast "-outsize 1500 1000" pobierze już level1 (przeskalowanie w dół z 1536x1024 - 6x4 obrazki 256px), wydaje mi się, że przeskok następuje gdzieś przy outsize równym 120% rozmiaru danego levela w pikselach (czyli miedzy level 0 a 1 zmiana wystąpi dla 922x614).

@pawel.zak.pawel
Dzięki za info. Nawet nie przypuszczałem, że coś takiego występuje.

pzak pisze...

Pewnie taka sytuacja zdarza się też dla innych warstw (nie sprawdzałem, ale można się tego domyslać).

Nie mniej dzięki wielkie za wpis, bo dzięki niemu mam sobie teraz wielką (25600x16640) topograficzną mapę Bydgoszczy w bardzo dużej skali :)

Anonimowy pisze...

Witam
teraz trzeba będzie się pofatygować i przed pobieraniem map sprawdzać w przeglądarce (prawy przycisk myszy na mapie - pokaż informacje o stronie - media), czy dla danego obszaru jest szukany przez nas level.

Chyba, że wspólnie dojdziemy dla jakich map i leveli jest dostępny cały obszar Polski, już nie mówiąc o tym by określić dla poszczególnych obszarów dostępność lub nie interesujących nas map.

A może jednak...

Spójżcie w przeglądarce tutaj na warstwę tbd
x 535191
y 698800

m_k pisze...

BDO i VMAP powinny być opracowane dla całego kraju, natomiast zasięg TBD można sprawdzić na stronach CODGiK http://212.244.179.168/przegladowka/?typ=1992_TBD_10 (choć oczywiście w ten sposób nie pozna się liczby leveli na Geoportalu).

fjk pisze...

Niestety nie umiem odnalezc informacji potrzebnych do ustalenia konkretnego obszaru ktory chcialbym zgrac. Nie mam tez pojecia jak okreslic zeby byla zgrywana warstwa z najwieksza szczegolowoscia. pawel.zak.pawel jak zgrales Bydgoszcz / Chcialbym tak zgrac Warszawe....

fjk pisze...

Ok udalo mi sie w sumie dojsc co i jak....Nie wiem tylko jak precyzyjnie okreslic -projwin ?

KOSMITA pisze...

"Ok udalo mi sie w sumie dojsc co i jak....Nie wiem tylko jak precyzyjnie okreslic -projwin ?"


w przeglądarce geoportalu sprawdź nad obszarm, który Ciebie interesuje x i y.

Gdal pobiera obszar od: narożnika północ-zachód [NW](wartość y, wartość x) do narożnika południe-wschód [SE](wartość y, wartość x)

schemat:
gdal_translate -of PNG -projwin wartość y[NW] wartość x[NW] wartość y[SE] wartość x[SE] "C:\jakis katalog\geop_ars.xml" "C:\tworzona\mapa.png"

fjk pisze...

O rany to sa poprotstu wspolrzedne z okna mapy.... a ja szukalem ich gdzies w tych linkach konkretnych kafelkow mozaiki...Ze to sa rogi zorientowalem sie. Super artykul szkoda ze do wiekszosci trzeba dojsc samemu ale udalo mi sie i mniej wiecej tez juz panuje nad zgrywaniem wybranego kawalka mapy. Dziekuje.

Anonimowy pisze...

Witam
Artykuł bardzo ciekawy ale nie bardzo mogę "załapać" jak ustawić parametry dla gdal aby uzyskiwać różną skalę mapy - może ktoś napisać na 2 lub 3 przykładach jak manipulować skalą pobieranej mapy ? Dla mnie jest to ważne gdyż często mam mapki na których białe tło urozmaica napis "Brak danych dla aktualnego powiększenia" :/
Pozdrawiam i dziękuję.

KOSMITA pisze...

Witam

1. Po pierwsze m_k prezentuje 7 warstw dostepnych w usłudze ARS.
2. Zatem dla uporządkowania sobie można stworzyć (tj. przekształcić pobrany pliku geop_ars.xml) np. 7 plików xml.
Ustawić tak jak pokazane w tabeli.

Teraz należy otworzyć(edytuj) plik xml i w 18-stym wierszu zmienić parametr lile level (tą cyfrę), czyli poziom, skalę mapy


3. m_k w tabeli w kolumnie tile level podał AKTUALNY i MAXYMALNY do zastosowania (pobrania) poziom mapy.
Zatem jeśli chcesz mapę w wybranej skali w 18-stym wierszu zmieniasz na:
dLA BDO na 0,1,2,3,4,5 lub 6
dla VMAP na 0,1 lub 2
dla TBD 0,1 lub 2 (to dane z tabeli; w przeglądarce zblizyć można do 3)
dla... juz wiadomo o co chodzi.

Schemat komendy pozostaje ten sam, wskazać tylko trzeba xml z ustawieniami do mapy.

UWAGA
zanim zacznie się pobierać mapy, radzę w przeglądarce sprawdzić czy są one dostępne dla interesującego nas obszaru.
Dotyczy to zwłaszcza TBD.
Jeśli w przeglądarce pojawi się napis "Brak danych dla aktualnego powiększenia" to mapy po prostu nie ma.
A jaka mapa jest?
Frefox>prawy przycisk myszy na mapie>pokaż informacje o stronie>media.

BDO na pewno pokrywa całą Polskę we wszystkich poziomach,
VMAP - chyba całą Polskę
TBD - nie pokrywa całej Polski, różnie na różnych poziomach.

I jeszcze jedno
Bliską zagranicę należ na wyższych poziomach traktować dosłownie.

Łukasz Świtaj pisze...

@KOSMITA "Bliską zagranicę należy na wyższych poziomach traktować dosłownie"

Jak należy to rozumieć? Dosłownie, czyli jak?

Anonimowy pisze...

Witam
Może się komus udało podpiąć ARS-a pod OpenLayers.
Próbowałem ale wyświetla mi kafle z informacją że ten fragment jest niedostępny. Nie wiem czy nie błądze. W przykładzie TMS w końcówce URL-a jest *.py w geoportalu jest aspx
Czy ARS to typowy TMS i pobieranie kafelków zadziała korzystając z OpenLayers.Layer.TMS. Coś mi sie wydaje że trzeba by jakoś recznie to ustawić żeby pobierane były odpowiednie numery kafli

KOSMITA pisze...

@KOSMITA "Bliską zagranicę należy na wyższych poziomach traktować dosłownie"

Jak należy to rozumieć? Dosłownie, czyli jak?



Chodzi o to, że gdy chce się pobrać mapy w większej skali np VMAP tile level 2 czy TBD, podając wartości x i y dla obszarów przygranicznych należy je podać takie, aby odpowiadający im obszar,nie był zbyt daleko od granicy polskiej oddalony.
W przeciwnym wypadku, obraz nie zostanie pobrany (GDAL... cuoldn't download...tile...at L@x...y...).

Osobiście wyznaczyłem sobie obszary graniczne (tj. wartości x i y dla 4 stron świata) naocznie w przeglądarce geoportalu (obszar uległ skurczeniu już dla VMAP)
Czasem problemów może przysporzyć pobieranie obszaru wód terytorialnych.

Anonimowy pisze...

Próbuje , próbuje i nie wychodzi tak jak potrzebuje. Potrzebuje pobrać mapkę TOPO w skali powiedzmy 1:15000 o powierzchni 50x50 km , od czego zacząć ? Zmiana pliku xml - czyli warstwa, poziom ... nie moge tego ogarnąć. Może dla was to oczywiste ja sie gdzieś gubie....

Anonimowy pisze...

taki błąd mi wyskakuje
http://krainaprzygod.com/foty/byk.jpg

m_k pisze...

Przepraszam za wcześniejszy brak odzewu z mojej strony, ale byłem na wakacjach (zresztą widzę, że Czytelnicy radzą sobie sami ;)

Anonimowy:
W nowej wersji OpenLayers (2.8) jest klasa OpenLayers.Layer.XYZ http://trac.openlayers.org/ticket/1950 tam jest wykorzystywana do OpenStreetMaps, ale postać url jest podobna do tego co mamy w Geoportalu (http://tile.openstreetmap.org/${z}/${x}/${y}.png), więc zapewne dałoby się to jakoś przerobić

Anonimowy1:
W przypadku map w formie cyfrowej ciężko mówić o skali jako takiej - co najwyżej o szczegółowości odpowiadającej mapie papierowej w danej skali lub o wielkości terenowej piksela.
A zacząć należałoby od znalezienia współrzędnych narożników prostokąta, w którym znajduje się dany obszar - w tym celu można skorzystać z przeglądarki map na stronie Geoportalu (w rogu wyswietlane są X i Y).

Anonimowy2:
Wystarczy zamienić jedynie 2. i 4. wartość w projwin (podaje się współrzędne lewego górnego i prawego dolnego narożnika).

Anonimowy pisze...

Dzięki master, jesli chodzi o zmiane skali , to którą wartością w xml operować aby uzyskać odpowiednie powiększenie?

m_k pisze...

TileLevel - dla TOPO max to 11 (na tym poziomie pobierać się będą najbardziej dokładne skany map 1:10 000);
żeby ściągnąć mapy np. 1:50 000 trzeba zastosować mniejszą wartość TileLevel (trzeba by sprawdzić w przeglądarce Geoportalu dla jakich wartości następują przeskoki między poszczególnymi rodzajami map topo)

Anonimowy pisze...

Jeśli chodzi o obszar zapytania w sensie x i y to podaje sie lewy górny i prawy dolny? czyli np podaje
lewy góra
x 642000
y 577000
prawy dół
x 630000
y 581000

i wyskakuje błąd, czy muszą to być jakieś konkretne wartości parzyste czy kwadraty ? I czy podaje sie tak jak wyżej ?

Anonimowy pisze...

drugi y to 592000

Anonimowy pisze...

Chyba znalazłem dziure podaje teraz yx yx

m_k pisze...

Kolejność współrzędnych XY/YX może sprawiać trochę problemów... :)

W GDAL podaje się je w układzie matematycznym (X oś pozioma, Y - pionowa), natomiast współrzędne z Geoportalu są w układzie 1992, w którym osie są zamienione.

Anonimowy pisze...

Panowie, a jak by wyglądał adres dla Google Earth, bo ten co miałem dotychczas: "http://sdi.geoportal.gov.pl/wms_orto/wmservice.aspx?VERSION=1.3.0&SERVICE=WMS&REQUEST=GetMap&LAYERS=ORTOFOTO&SRS=EPSG:4326&WIDTH=1024&HEIGHT=1024&TRANSPARENT=FALSE&FORMAT=image/jpeg&styles=" już nie działa. Proszę was bardzo o pomocy, bo z tymi adresami kombinowałem na różne sposoby i nic, a zależy mi akurat na tym programie, bo mam tam dużo pozaznaczanych szpilek, jest linijka itd, a ten Wind nie chce mi się instalować. Za wskazówki z góry dziękuję.
merti

m_k pisze...

ARS bezpośrednio pod Google Earth nie podepniesz.
Natomiast działanie WMS Geoportalu jest jednakowo beznadziejne czy to w GE, czy w World Wind, czy też w jakimkolwiek innnym programie... w 99% przypadków zwracane jest po prostu samo logo na białym tle.

Anonimowy pisze...

Drobne spostrzeżenie dla pobierających z serwera ARS Geoportalu:
Niestety dla VMAP jest przynajmniej jedna "dziura" wewnątrz terenu Polski - brak klastrów (tiles) w zakresie L1X121Y161-240 :-(

KOSMITA pisze...

Tę dziurę w VMAP zgłosiłem tydzień temu. Napisali, że to uzupełnią.
Oby nie "wkrótce"

Anonimowy pisze...

Zauważyłem dotychczas 2 "dziury" w VMAP:
L1X121Y161-242
L1X122Y40-145

Obawiam się, że to nie jedyne... :-(

Ciekawe kiedy je załatają?

Anonimowy pisze...

W nawiazaniu do tabelki dostępnych warstw przez ARS. Na północy Polski (mniej więcej od linii trochę poniej Wejherowa w górę)na RASTER-TOPO dostępna jest warstwa 12.

Marcin pisze...

Są miejsca (mi akurat na okolicach Ełku tak wyszło), gdzie png z TBD ma 3 kanały.

Przy konfiguracji w xmlu na 4 kanały, GDAL sypnął błędem:

ERROR 1: GDALWMS: Incorrect bands count 3 in downloaded block, expected 4.
ERROR 1: GDALWMS: ReadBlockFromFile (http://ars.geoportal.gov.pl/ARS/getTile.asp
x?service=TBD&cs=EPSG2180&fileIDX=L1X1846Y1693.png) failed.
ERROR 1: IReadBlock failed at X offset 1815, Y offset 354
ERROR 1: GetBlockRef failed at X block offset 1815, Y block offset 354

KOSMITA pisze...

Na forum trekbuddy.net ciekawa Niespodzianka

http://www.trekbuddy.net/forum/viewtopic.php?p=28386#28386

Unknown pisze...

Na tym forum pojawiam sie po raz pierwszy i poniżej chciałem się podzielić kilkoma uwagami, opiniami:
1) dziury sa również na poziomie 6 (ARS) dla ortofotomapy, w rejonie doliny Biebrzy (dotyczy to kolorowej ortofotomapy), w przypadku ustawienia w pliku konfiguracyjnym XML poziomu 6 GDAL sciaga biale tlo z nadrukiem "geoportalu", lub tylko stara ortofotomape, szara; zmiana ustawien poziomu kafelkow z 6 na 5 zalatwia sprawe;
2) ogólnie to fajnie ze ten serwis jest , ale jak na pieniadze, ktore w pompowano w Geoportal to dziala fatalnie, kiedys naszla mnie mysl, ze taniej byloby nagrac po kawalkach caly ten serwis na dvd i dac ludziom do reki, albo udostępnić poprzez siec jako linki albo ftp; praca z tym serwisem w trybie online w programmach GIS to cwiczenie cierpliwosci;
3) każda informacja na Geoportalu, ze cos im sie udalo podpiac (w tonie oh i ah) to gorsze działanie serwisu (powiem tylko ze korzystam z niego codzienie od czasu reaktywacji - poprzez GDAL'a, czasami poprzez oprogramowanie GIS, czy poprzez ich przeglądarkę itp - sciagam i pracuje pozniej w trybie offline)

Major pisze...

Sławek

Ad 2. Jeszcze prościej byłoby przekazać nieodpłatnie mapy serwisowi Google Earth - przyjęli by je z pocałowaniem ręki. Ale w (kołchozowej) UE nie da tak się niestety zrobić (kolejne kraje tworzą własne "geoportale" np. Francja), bo przecież Google to wredny imperialistyczny monopolista.

Zresztą tak samo jest z projektem skanowania książek Google. Co najlpesze największa krytyka ze strony UE spotyka Google'a za to, że "większość książek jest w języku angielskim". Paranoja - sami palcem nie kiwną (tylko przejadają publiczne pieniądze) a jeszcze czepiają się tych, którzy próbują zrobić coś sensownego.


A tak ogólnie to pomijam już zupełnie fakt, że (o ile się nie mylę) w każdym urzędzie gminy są negatywy zdjęć lotniczych jej obszaru wykonane w ramach programu PHARE i to nie z jednego ale z kilku kolejnych lat - jeżeli się mylę, niech mnie sprostuje Admin - pewnie wie coś na ten temat.

m_k pisze...

@Sławek, Major:
Czasami mam takie wrażenie jakby Geoportal powstał jedynie po to, aby można było się nim pochwalić przed rządem/Unią/etc. (lub też na odczepkę, żeby nie mówili, że nie spełniamy wymogów INSPIRE...)
Teoretycznie wszystko wygląda pięknie - mamy WMS, WFS, nawet CSW, zgodność z ISO, OGC, INSPIRE i sporo innych mądrze brzmiących skrótów i słówek jak SDI czy interoperacyjność... natomiast w praktyce chyba wszyscy widzą jak to wygląda - mamy WTF, SNAFU i FUBAR ;)
Generalnie idea jest słuszna, gorzej z wykonaniem. Ale może za kolejne 2 lata i kilkadziesiąt milionów złotych wreszcie doczekamy się czegoś w miarę normalnie działającego :)

Nie uważam żeby dawanie map Google było dobrym pomysłem - to jest firma prywatna, zarabiająca na swoich produktach, więc tym bardziej nie powinniśmy jej dotować naszymi pieniędzmi z podatków. Dodatkowo w ten sposób pozbylibyśmy się zapewne szerokiego dostępu do tych danych - należałoby zapomnieć o WMS i korzystaniu z zewnętrznych programów GIS, zostałoby jedynie przeglądanie w Google Earth/Maps.
Wolałbym już pełne uwolnienie i udostępnienie (na zasadach public domain) - czyli tak jak to jest teraz w USA... Cóż, pomarzyć zawsze można :)

Co do zdjęć PHARE w każdej gminie - nigdy o niczym takim nie słyszałem, ale byłoby to dosyć dziwne (na co gminie negatywy?). To wszystko raczej leży w CODGiK (lub ew. WODGiKach).

PS Tu nie ma żadnego Admina :)

Unknown pisze...

Mogę już pobierać mapy WMS i ARS - dzięki!

Chciałbym jeszcze tylko do swoich mapek mieć numery działek - z serwera WFS. Czy je również można pobrać gdal_translate'm? Jeśli tak, to prosiłbym o instrukcję/link na temat jak spreparować odpowiedniego XMLa.

m_k pisze...

@Tomasz
Wszystkie narzędzia GDAL operują na danych rastrowych. Do wektorów służy OGR, ale w nim nie ma chyba jeszcze drivera WFS. Więc możesz albo pobrać numery działek z WMS
(sdi.geoportal.gov.pl/wms_dzkat/wmservice.aspx warstwa Numery_dzialek), albo ręcznie ściągnąć działki w postaci wektorowej i przerobić je z GML np. na SHP przy użyciu ogr2ogr.
Przykładowe zapytanie dla działek:
http://sdi.geoportal.gov.pl/wfs_dzkat/wfservice.aspx?request=getfeature&version=1.1.0&service=wfs&typename=Dzialki&bbox=21,51,22,52

PS WFS Geoportalu działają jeszcze gorzej niż WMS...

Anonimowy pisze...

Proszę o przykład prawidłowego zapisu linii komend dla konwersji gml do shp przy użyciu ogr2ogr. Próbowałem sam - nie udało się... :-(

m_k pisze...

ogr2ogr -f "ESRI Shapefile" output.shp input.gml

Anonimowy pisze...

Wpisałem zgodnie z powyższym przykładem.
Niestety, tak nie udaje się przekonwertować :-(
Pojawia się komunikat:
"FAILURE: Unable to open datasource 'woj.gml' with the following drivers"

Używam ogr2ogr z pakietu FWTools v.1.0.5

m_k pisze...

Albo za stara wersja FWTools (obecnie jest chyba 2.2), albo GML z Geoportalu jest niepoprawny (jakie to dane - PRG, kataster?).

Anonimowy pisze...

Problem jednak dotyczył starej wersji. Zniknął po zainstalowaniu najnowszego FWTools 2.4.3
Dane PRG przekonwertował bez problemu.

Czy są dostępne (na geoportalu lub gdzieś indziej) wektorowe granice obszarów chronionych (parki narodowe, krajobrazowe, rezerwaty, obszary Natura2000 itp.)??

Anonimowy pisze...

Może komuś się to przyda. Usługa ARS udostępnia metainformacje:
http://ars.geoportal.gov.pl/ARS/info.xml
Pozdrawiam
:)

m_k pisze...

Wow! No coś takiego... jestem zaskoczony (i to pozytywnie) :)

Unknown pisze...

Od kilku dni nie mogę nic ściągnąć gdalem poprzez usługę ARS; wiecie co sie dzieje (nie tylko ja mam ten problem); adres http który generuje gdal informując o błędzie, można wykorzystać w przeglądarce, i zazwyczaj daje się tak ściągnąć (kafelek 256x256);

Unknown pisze...

Uściślając nie działa ściąganie ortofotomapy

m_k pisze...

@Slawek:
Nadal nie działa czy już OK jest?

W każdym razie na przyszłość podawaj komendę wpisywaną do GDAL jak i dokładny komunikat błędu.

Unknown pisze...

Teraz dziala, ale roznie. Sciagam dosc duzo bo mi to do pracy potrzebne. Problemy trwały jakies dwa tygodnie od około 22 wrzesnia. Sciagam dane w kwadratach 5x5km i tego 22 wrzesnia przestal sciagac te kwadraty; dla pojedynczej instrukcji wygladalo to dosc dziwnie, bo poczatek był normalny, dopiero po jakims czasie wyrzucal blad i przestawal sciagac (mam rownoczesnie wlączone oprogramowanie monitorujące ruch sieciowy); blad mial postac tego typu (z dnia dzisiejszego, wtetdy procent sciagniecia zawsze byl rowny 0:
Computed -srcwin 2073600 1149952 12800 12800 from projected window.
0...10...20...30...40..ERROR 1: GDALWMS: Unable to download block 8127, 4515.
URL: http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=ORTOFOTO&cs=EPSG2180&fileIDX=L6X8127Y3676.jpg
HTTP status code: 0, error: couldn't connect to host.
ERROR 1: IReadBlock failed at X offset 8100, Y offset 4515
ERROR 1: GetBlockRef failed at X block offset 8100, Y block offset 4515;
Przeanalizowalem co tak naprawde robi GDAL i okazalo sie ze sciaga dla tego konkretnego przypadku 8-9 kalfelkow i zrywa polaczenie; w zwiazku tym na czas niemocy po protstu zmiejszylem zakres sciagania do 100 x 100m i szedl jak burza; co ciekawe przy rozmiarza powyzej 100 (probowalem 200 x 200 i 500 x 500) wywalal sie często i gęsto;
w tej chwili dziala normalnie, choc tez bywaja chwile lepsze i gorsze, i co ciekawe nie do konca wiaze sie to z obciazeniem przez użytkownikow;
Mam pytanie, z mojej ciekowości: czy sciagając GDAL'em generujemy skok ilości użytkowników na stronie www Geoportalu?
pozdrawiam S.

m_k pisze...

Nie wiem jak to dokładnie wygląda w GDAL od środka takie ściaganie - może po prostu odpala kilka równoległych wątków? Może w Geoportalu jest jakiś limit połączeń na jedno IP? A może ARS też ma swoje gorsze i lepsze dni podobnie jak WMS... Kto to wie :)

Co do pytania o ilość użytkowników... na stronie www to nie, bo w końcu odwołujemy się bezpośrednio do WMS czy też gotowych plików z ARS, natomiast ma to odbicie w logach tych usług. Potem wychodzą takie statystyki jak prezentowano ostatnio na konferencji (o czym piszę trochę w nowym poście) - dziennie jakieś 3 tysiące zapytań do WMS z orto, a tu nagle jednego dnia skok do 35 000 :) Chyba nie trzeba komentarza...

Anonimowy pisze...

Witam! Mam drobne pytanie: potrzebuję ściągnąć obszar około 6000km2 i potrafię wpisać komendę, żeby GFDAL ściągł mi kawałek po kawałku (2km x 2km). Chciałbym jednak wpisać te wszystkie komendy jako batch i zostawić kompa choćby na całą noc - ale nigdzie nie mogę znaleźć informacji jak zrobić taki plik batch. Albo może wystarczyłoby wpisać jakiś łącznik pomiędzy komendami dla GDALa..? Czy ktoś umie mi pomóc?
Pozdrawiam! Bartek

m_k pisze...

@Bartek:
Stwórz w notatniku plik, w każdej linijce wpisz komendę gdal_translate..., zapisz z rozszerzeniem .bat. Następnie uruchom zapisany plik z poziomu FWTools Shell - GDAL powinien wykonywać komendę po komendzie tj. ściągnie pierwszy kawałek, potem zacznie drugi itp.

Można by to też jeszcze bardziej zautomatyzować przy pomocy pętli FOR, wtedy nie trzeba by było wpisywać tylu komend i samo by zmieniało wartości projwin i nazwy plików wyjściowych... może jak będzie mi się nudziło, to kiedyś coś takiego zrobię :)

Anonimowy pisze...

Hej! Dzienki za szybką reakcję. W międzyczasie udało mi się zrobić pliczek bat, który pięknie ściąga wszystko co trzeba, oto przykład, może komuś się przyda:

pierwsza linijka:
@echo off
SET FWTOOLS_DIR=C:\PROGRA~1\FWTOOL~1.6
call "%FWTOOLS_DIR%\bin\setfwenv.bat"

a potem kolejne polecenia, np.
gdal_translate -of JPEG -projwin 504300 251000 506300 249000 "e:\GEOPORTAL\ORTO\geop_ars.xml" "e:\GEOPORTAL\ORTO\0015.jpeg
gdal_translate -of JPEG -projwin 504300 249000 506300 247000 "e:\GEOPORTAL\ORTO\geop_ars.xml" "e:\GEOPORTAL\ORTO\0016.jpeg

Pozdrawiam!
Bartek

fjk pisze...

Robilem to gdalem i musze powiedziec ze na poczatku zabralo mi to sporo czasu, zamin rozgryzlem co i jak. Teraz juz jest duzo postow opisujacych jak to robic. A tu bardzo ciekawa alternatywa : http://www.forum.eksploracja.pl/viewtopic.php?f=10&t=15196

Anonimowy pisze...

cytat za m_k
"Następnie uruchom zapisany plik z poziomu FWTools Shell - GDAL powinien wykonywać komendę po komendzie tj. ściągnie pierwszy kawałek, potem zacznie drugi itp."

to znaczy wpisać polecenie-ścieżkę w w wierszu poleceń fwtools shell?

Anonimowy pisze...

... do pliku bat?

Anonimowy pisze...

Sam sobie odpowiem. Tak to znaczy wskazać ścieżkę do położenia pliku np. F:\nazwa.bat

KOSMITA pisze...

m_k
a czy da się w GDALU pobrać mapy podając link w formie http://sdi.geoportal.gov.pl/wms_TOPO/wmservice.aspx?service=WMS&request=GetMap&version=1.3.0&CRS=EPSG:2180&layers=TOPO_50_65 + jakieś gdalowe komendy?

m_k pisze...

@KOSMITA:
To jest WMS - o pobieraniu GDALem map z serwerów WMS pisałem w tej notce: http://terraobserver.blogspot.com/2008/12/zabawy-z-geoportalem-cd.html
Tamże przykładowe pliki xml i komendy (co prawda dla ortofoto, ale nie powinno być problemu z przerobieniem na topo).

KOSMITA pisze...

Czy można zmodyfikować polecenie pobierania, aby nie wywalało błędu i nie przerywało pobierania gdy trafi się na obszar częściowo nie pokryty mapą lecz miejsce to było by np. uzupełnione białym tłem?

m_k pisze...

Hmm, chyba nie za bardzo się da...
Możesz pobawić się ustawieniami w xml (szablon: http://www.gdal.org/frmt_wms.html; opcje: AdviseRead i VerifyAdviseRead), ale czy to coś zmieni - nie wiem.

Anonimowy pisze...

Może komuś się przyda. W warstwie TBD miałem problemy z obszarami gdzie chyba brak map. Pomogło zmiana png na jpg w xml (BandsCount z 4,3)- wyglądało jakby dla braków wygenerowano mniejpamięciożerny plik jpg.

Anonimowy pisze...

Witam. Jakiś czas temu pytałem Was jak by wyglądał adres do GE ale niestety nikt nie potrafił mi pomóc. Jakoś ostanio troche pogrzebalem i doszedłem do takiej składni:
http://sdi.geoportal.gov.pl/wms_prg/wmservice.aspx?service=WMS&request=GetMap&version=1.3.0&width=1024&height=1024&CRS=EPSG:2180&layers=Wojewodztwa&format=image/png&TRANSPARENT=TRUE&EXCEPTIONS=INIMAGE&styles=,
no i już czuję że jestem blisko ale na drodze staje mi biały ekran ze zwrotnym komunikatem:
Styles and Layers number mismatch i does not convert to double type. input string wasnot in a correct.
Jakieś sugestie??
merti

m_k pisze...

Za bardzo nie rozumiem w czym problem: pytasz o WMS pod notką o ARS, oczekujesz że adres dla GE będzie się różnił jakoś od adresów dla innych klientów...
Przecież wystarczy, że w GE podasz sam adres serwera (do znaku ?) w okienku z parametrami WMS.

W każdym razie błąd jest spowodowany przecinkiem w styles. Druga sprawa to CRS=EPSG:2180 - GE nie obsługuje takiego układu, a jedynie 4326.

Anonimowy pisze...

OK, rozumiem. Sorki m_k że ci du..sze truję ale za bardzo tego tematu nie kumam, a tutoriale jakie znalazłem, za Wiki, są po angielsku, który nie jest mi dobrze znany.
Ale to już jest mało ważne. Temat okazał się na tyle dziecinnie prosty, że jeszcze mi się bonus trafił :) Teraz oprócz warstwy orto w GE mam jeszcze inne warstwy map topo i to w różnych skalach :)
merti

Anonimowy pisze...

Aha, taki obrazek też jest możliwy w GE i to od początku jego istnienia...
pozdrawiam
merti

Anonimowy pisze...

Mógłby ktoś podpowiedzieć czemu
działa:
http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=RASTER_TOPO&cs=EPSG2180&fileIDX=L6X86Y38.jpg
a nie działa:
http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=VMAP&cs=EPSG2180&fileIDX=L6X86Y38.png
http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=TBD&cs=EPSG2180&fileIDX=L9X688Y304.png
http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=ORTOFOTO&cs=EPSG2180&fileIDX=L6X86Y38.jpg

m_k pisze...

Rozumiem, że wcześniej podane linki działały? Może znowu coś robią po stronie Geoportalu.
Na wszelki wypadek upewniłbym się, czy podane kombinacje XY oraz level są poprawne - dla różnych warstw te same (numer) poziomy nie zawsze są ze sobą tożsame (w sensie przybliżenia).

Anonimowy pisze...

Wcześniej nie wiem czy działały.
Poziom L i nr kafla dobry.
Ponoć warstwa orto jest aktualizowana i dostepna na razie przez WMS ,ale nie wiem czemu reszta nie działa.

Anonimowy pisze...

Wytłumaczcie mi proszę dokładnie jak ściągnąć przy pomocy gdal dane katastralne (działki, numery działek). Mam problem ze sformułowaniem prawidłowej formuły:/
Jak w tym wypadku powinien również wyglądać plik .xml ???

Anonimowy pisze...

Dołączę się do prośby przedmówcy. Czy moglibyście opisać jak poradzić sobie z pobieraniem danych katastralnych z geoportalu przy pomocy FW Tools?

Anonimowy pisze...

Udało się ustalić LZTS dla pozostałych warstw? Jeśli nie, to jak dokonywałeś prób dla BDO?

mk pisze...

LZTS można przyjąć, że jest wspólny - wszystkie warstwy mają takie samo DataWindow. Różne są tylko wartości TileCount.

Anonimowy pisze...

Może spytam inaczej ;) Jakie są wartości oraz dla poszczególnych serwerów?

Anonimowy pisze...

UpperLeftY oraz LowerRightX

*ucieło

mk pisze...

Poprawka (poprzednim razem źle spojrzałem): wartości Upper/Lower są zawsze takie same, zmieniają się jedynie TileCount i TileLevel (podane w tabelce).

Anonimowy pisze...

Widzę, że np. LowerRightX to 20037508.34 Jakie zatem powinny być poprawne wartości argumentu -projwin przy pobieraniu z OSM? Jak je przeliczać z WGS84?

Anonimowy pisze...

Witam serdecznie! Potrzebujemy całą mapę Polski w skali 1:20 000 z serwisu http://maps.geoportal.gov.pl.
Oczywiście odpowiednio wynagrodzimy. Zainteresowaych proszę o kontakt pod binarytribe(at)gmai.com

Anonimowy pisze...

Ja ci ja chetnie sciagne i wysle jak mi przygotujesz dokladne komendy/skrypt.

tmm at poczta . fm

Des pisze...

Rozwiązanie działał ok i dziala nadal dobrze, natomiast ogarnął ktoś jak teraz się zabrać za Geoportal w nowej odlosnie? Tam są inne adresy do ARS i jak widze, aktualniejsze.

Anonimowy pisze...



http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=ORTOFOTO&cs=EPSG2180&fileIDX=L${z}X${x}Y${y}.jpg


0
819200
1228800
0
6
192
128
bottom

EPSG:2180
256
256
3

.jpg



Dlaczego xml napisany jak wyżej nie ściąga ortofotomapy? Mógłby ktoś wskazać błąd? Używam QGIS.

m_k pisze...

Wydawało mi się, że problem leży w zawieszaniu się QGIS przy próbie pobrania zbyt wielu kafelków (jak można zobaczyć w xml ogólny widok Polski składa się z 192x128 obrazków), ale nawet przy przybliżeniu się i dodaniu warstwy orto efekt jest taki sam. Więc sam teraz nie wiem...

Dominik Zalewski pisze...

Czy ktoś wie może jaki jest przelicznik piksel/metr rzeczywistości w podanej w uaktualnieniu tabelce?

Desmond pisze...

Poziomy:
6 - 25.0 m/pix
7 - 12.5 m/pix
8 - 6.25 m/pix ... etc

Niestety wraz z wczorajszą przerwą techniczną serwer ARS stał się niedostępny. Co prawda i tak Geoportal 1 został zamknięty te 2 tygodnie temu, ale adres ARS był jeszcze sprawny i dało się ciągnąć dane ;)

Piotr pisze...

No to się spóźniłem. A udało mi się ściągnąć pół Polski na poziomie 8 (żeby nie było: dla własnych, hobbystycznych i niekomercyjnych celów). Ktoś wie czy ARS został zamknięty już na dobre?
Jest jeszcze jakiś inny sposób na ściąganie danych (najlepiej w tym samym formacie, tj. kafelki jpg o rozmiarach 256x256px)?
A może ktoś byłby skłonny wrzucić dane na jakiś server do ściągnięcia?
Byłbym bardzo wdzięczny.

Des pisze...

Spóźniłeś się :)

TBD poziom 10 zajmuje 10 GB
VMAP L8 - 1 GB
Orto L10 - 23 GB
Topo 10k (L10) - 30 gb (dziwne, że więcej jak orto)
Topo 25k (L9) - 9 GB
Topo 50k - 2,3 GB

Trudno, żeby to wrzucić na jakikolwiek serwer.

ARS był usługą związaną z Geoportalem 1, jako że GP1 został wyłączony, to ARS również.

Jego rolę przejął GP2 z serwerem kafelkowym ESRI. Niestety nie doszedłem do tego, jak pobierać dane z mapservera WMTS a w sieci piszą wręcz, że GDAL nie obsługuje WMTS.

Widziałem natomiast, że funkcjonuje program Kafelkarz, który w miarę dobrze sobie radzi z GP2 - problem w tym, że robi on kalibracje głównie pod programy turystyczne np Ozi. Pliku prj (pod ArcGIS przykładowo) już nie wygeneruje.

Anonimowy pisze...

Witam koledzy, może ktoś podpowie, muszę do pewnych obiektów, które mają adres oraz nr działki przypisać orientacyjne współrzędne w układzie WGS84. Może posiada ktoś jakąś bazkę z której mógłbym takie dane "podpiąć" ? Lub jakiś pomysł, jak to zrobić, żeby nie klikać każdego rekordu oddzielnie i szukać na geoportalu ? :)
mój adres john.lenon(@)wp.pl

m_k pisze...

Popatrz na serwisy geokodujące w Google Maps i OpenStreetMap (Nominatim), ew. iMPA od Geo-System (dla wybranych gmin). Być może API Geoportalu też coś takiego umożliwia.

Anonimowy pisze...

No właśnie widziałem te serwisy, tylko jak to ugryźć ? :) Najlepiej jakby się udało zrobić zrzut adresów, działek, współrzędnych np do csv lub pliku tekstowego, później bym sobie zrobił proste porównanie z moim plikiem. Lub np makro w excelu które otwierałoby mapę z konkretną działką z danego wiersza - wtedy bym sobie przepisał współrzędne ręcznie.

Anonimowy pisze...

Znalazłem taką nietypową mapę: http://gauss.suub.uni-bremen.de/suub/hist/index.jsp?id=Kt.+I-879

Mapa jest o tyle dziwna, że kafelki są w formacie gif, ponadto przy przesuwaniu mapy w cache przeglądarki nie zostają typowe kafelki z przystającą do siebie treścią, tylko kafelki z treścią nakładającą się na siebie lub z niewielką (kilka-kilkanaście pikseli) luką w treści pomiędzy sąsiednimi kafelkami. Czy ktoś wie, jak pobrać tę mapę, albo przynajmniej kafelki, tak żeby dało się później w miarę szybko je połączyć? Składanie tego z ręcznym dopasowywaniem treści to byłaby mordęga.