Overpass - do wyciągania danych z OSM

@rowers2
Marek ostatnimi czasy postulował potrzebę usprawnień dla a:h także może ktoś podejmie wyzwanie i przygotuje reguły overpass pomagające w utrzymaniu tego kodu

@All
Przy tej okazji na nowo znalazłem, że swego czasu podniesiony został temat ujednolicenia wszystkich nazw banków PKO S.A. Może i do tego udało by się zaprząc by overpassa?

Muszę sprawdzić czy pewne punkty na mapie należą do danego obszaru.
Mam uszykowaną kwerendę w overpass turbo, która zaznacza mi obszar.
Ale jak to zrobić aby na mapie zaznaczone były również moje punkty (mam ich współrzędne)

Przykładowe punkty (ogólnie mam ich 460):

52.396491, 16.893310
52.397499, 16.896593

Obecna kwerenda:

[date:“2016-07-17T00:00:00Z”]
[timeout:620]
[bbox:{{bbox}}];
(

way[leisure=park];
way[landuse=recreation_ground];
way[leisure=recreation_ground];
way[leisure=pitch];
way[leisure=garden];
way[leisure=golf_course];
way[leisure=playground];
way[landuse=meadow];
way[landuse=grass];
way[landuse=greenfield];
way[natural=scrub];
way[natural=grassland];
way[landuse=farmyard];


way[natural=plateau];
way[boundary=national_park]; 
way[leisure=nature_reserve];
way[natural=heath];
way[natural=moor];
way[landuse=farmland];
way[landuse=orchard];
way[landuse=vineyard];

);
out body;

;
out skel qt;

//Confirmed OSM tags will appear in blue
//Unconfirmed OSM tags will appear in grey

{{style:

way[leisure=park],
way[landuse=recreation_ground], 
way[leisure=recreation_ground],
way[leisure=pitch],
way[leisure=garden],
way[leisure=golf_course],
way[leisure=playground],
way[landuse=meadow],
way[landuse=grass],
way[landuse=greenfield],
way[natural=scrub],
way[natural=grassland],
way[landuse=farmyard]

{ color:blue; fill-color:blue; }

way[leisure=nature_reserve],
way[natural=plateau],
way[natural=heath],
way[natural=moor],
way[landuse=farmland],
way[landuse=orchard],
way[landuse=vineyard]

{ color:grey; fill-color:grey; }
}}

Pomoże ktoś?
Nie znam się na tym :frowning:

Tutaj coś jest: https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Query_for_areas_.28is_in.29

Tylko jak to zrobić?
Próbuję i nic :frowning:
Cały czas zaznacza mi tylko obszary. Jak sprawdzić teraz czy jakieś współrzędne należą do tego obszaru czy nie?

Zdefiniuj problem. Problemem jest to, że nie możesz zwizualizować swoich punktów, czy że zwracane są wszystkie obszary, a nie tylko te, które obejmują Twoje punkty?

is_in pozwoli Ci zwrócić te obszary, które obejmują Twoje punkty.

Jak chcesz teraz na wynik z Overpassa nałożyć swoje punkty - to jest to problem do którego potrzebujesz innego narzędzia.

Do wyniku z Overpassa chciałbym właśnie nałożyć swoje punkty. A wiesz może jakim narzędziem mogę to zrobić?

O ile dane pasują do OSM to dodaj je w OSM. A jeśli nie to możesz ściągnąć czyste dane jako geojson i obrobić w QGIS’ie

Zasadniczo Overpass wyciąga to, co jest w bazie, więc jeśli Twoich punktów w bazie nie ma…
A co właściwie chcesz z tym zrobić? Może czym innym da się to osiągnąć, np uMap pozwoli Ci pokazać na mapie obiekty wyciągnięte Overpassem plus cokolwiek sobie zechcesz dorysować…

EDIT: Znalazłem osobny wątek na ten sam temat, w którym jest częściowa odpowiedź na moje pytanie. Pozwoliłem sobie wątki połączyć, z dwóch zapytań pozostawiając to, które było w osobnym wątku, jako precyzyjniej opisujące problem.

I tak, uMap powinien Ci pomóc sobie te punkty zobrazować, możesz wynik overpassa wyeksportować do GeoJSON i zaczytać do uMap, a ze swoich punktów musiałbyś też zrobić jakiś format importowalny do uMap, chociażby również GeoJSON.

Pytanko mam. Czy dane overpassturbo w ogóle są aktualizowane? Przydałaby mi się one teraz zaktualizowane, a jak patrzę sobie na lewą część strony to niestety. Dane dla terenu, który chciałem prześledzić pochodzą z 7 lipca 2016 roku. Jest jakaś szansa na aktualizację danych?

Patrzysz na parki itp. w wiadomym nam :wink: celu?
Usuń [date:…] z góry.

A nie korzystasz z jakiegoś serwera testowego? Jedynie słuszny serwer pokazuje stan aktualny.
Albo po prostu widzisz w zapytaniu wpis, żeby wyszukiwał według stanu na 7 lipca 2016, wtedy wystarczy go usunąć i odświeżyć zapytanie.

Przerabiając przykłady z Wiki stworzyłem kwerendę, która może podpowiedzieć gdzie rysować budynki.
Korzystamy oczywiście z faktu, że zaimportowanymi adresami pokryta jest niemal cała Polska.

Wersja z bbox-em: http://overpass-turbo.eu/s/FpW
Wersja dla obszaru (np. gminy, powiatu): http://overpass-turbo.eu/s/FpV

Super. Działa. Warto też zmniejszyć sobie odległość do np. 100m. A z tymi adresami jak to jest, one są co jakiś czas aktualizowane z jakieś zewnętrznej bazy państwowej?

Najczęściej są importowane z bazy ewidencji miejscowości, ulic i adresów ( EMUiA) poprzez serwis iMPA na prośbę wyrażoną w tym wątku.

Automagicznie to nie. Zazwyczaj Zbigniew to ogarnia(ł) na czyjąś prośbę z forumowego wątku. Bazując na skrypcie od WiktorN, który chyba jest na GitHubie.
Większość gmin używa e-mapa.net (iMPA) albo EMUiA. Choć koniec końców dane dla wszystkich gmin powinny i tak lądować w PRG.

Proste zapytanie Overpassa do wykrywania wsi bez odrysowanych budynków

Overpassowi hakerzy, wiecie może jak zategować poniższą kwerendę, aby węzły należące do granicy nie były uwzględniane?

http://overpass-turbo.eu/s/IPv

A możemy zacząć od zdefiniowania “granicy”?

Jak już zdefiniujemy, to odejmiemy od .relations i ewentualnie od .ways i dopiero w tak otrzymanych zbiorach będziemy liczyć tagi…

Yyy… 3. linijka :smiley:

Puść, to zobaczysz o co chodzi.

W takim razie nie umiem tego zrobić względem .searchArea, więc wyciągnąłbym osobno węzły granicy Woli i odjął na koniec od wyniku. W sensie że zmieniłbym na

( 
  (
    node(area.searchArea)(if:count_tags() == 0);
    - node(w.ways);
  );
  (
    way(area.searchArea)(if:count_tags() == 0);
    - way(r.relations);
  );
)->.wynik;

i od .wynik bym odejmował osobno wyciągnięte węzły (i linie?) granicy Woli.

Też bym chciał umieć to zrobić ładniej…