Czy da się w overpass w {{geocodeArea:Kraków}} wpisać dwa miasta/regiony? Np. jeśli chciałbym jednocześnie Kraków i Poznań?
Można na pewno skleić dwa zapytania (daj znać jeśli pomocy tu potrzebujesz), ale nie potrafię tego zrobić w jednym geocodeArea .
Jak skleić? Wkleić jedno pod drugim? Bo chciałbym, żeby nie trzeba było osobno uruchamiać dwóch zapytań.
Możesz. Grupujesz obszary w dodatkowe nawiasy:
(
{{geocodeArea:Poznań}};
{{geocodeArea:Kraków}};
)->.searchArea;
a potem resztę wykonujesz tak samo używając (area.searchArea).
Możesz też zawęzić do mniejszych obszarów, jak nie interesuje cię cało miasto. Ja często korzystam z kluczy/wartości teryt:simc np. do wybrania poszczególnych dzielnic Warszawy.
[out:json];
(
area["teryt:simc"="0919884"]; // Wola
area["teryt:simc"="0918643"]; // Ochota
area["teryt:simc"="0918130"]; // Mokotów
)->.a;
Dzięki!
A co zrobić, gdy nazwa nie jest unikalna, jak np. “Stare Miasto”, “Nowa Wieś” i może być wiele obiektów o takiej samej nazwie.
Da się jakoś wpisać ID linii z OSM?
Np. po wpisaniu {{geocodeArea:Stare Miasto}} znajduje obiekty w… Jerozolimie;)
Obejrzyj drugi z podanych przykładów
Nie każdy obiekt ma tag “teryt:simc”. Chodziło mi o numer “way” w OSM.
Stare Miasto we Wrocławiu i Poznaniu:
area(id:3602341619,3601849136)->.searchArea;
id są powiększone o 3600000000, bo to relacje. Dla linii należy powiększyć o 2400000000.
Mógłby ktoś pomóc ?
Potrzebuję wyciągnąć z bazy te drogi unclassified i residental dla których surface nie ma wartości.
Drugi temat to drogi dla których surface=xxx (coś sobie podstawię)
Z góry dzięki.
http://overpass-turbo.eu/s/123o
http://overpass-turbo.eu/s/123p
dla innych nawierzchni podmieniasz [“surface”=“gravel”] na [“surface”=“xxx”]
niestety pierwsza kwerenda zwraca tylko drogi unclassified, nie działa dla residental
W pierwszej kwerendzie była literówka - zamiast ‘residential’ było wpisane ‘residental’. Poniżej poprawiona kwerenda:
http://overpass-turbo.eu/s/12gX
dzięki
Opcjonalnie, po małej optymalizacji - 2w1: https://overpass-turbo.eu/s/12hz
Dla poprawnego działania jedna z opcji powinna być ‘zakomentowana’.
Ciekawostka dla użytkowników overpass.
Można uprościć algorytm wyszukiwania i zamiast 3 linii:
(
node["amenity"="pharmacy"]({{bbox}});
way["amenity"="pharmacy"]({{bbox}});
relation["amenity"="pharmacy"]({{bbox}});
);
użyć jednej:
(
nwr["amenity"="pharmacy"]({{bbox}});
);
Ktoś kiedyś pokazywał gdzieś kwerendę do wyszukiwania dróg track obok adresów.
Nie mogę teraz jej odnaleźć…
Podpowie ktoś ?
Pewnie chodzi o coś takiego:
[out:json][timeout:8000][bbox:{{bbox}}];
(way["highway"~"^(service|living_street|residential|unclassified|tertiary|tertiary|secondary|primary|trunk|motorway)(_link)*$"];)->.highways;
(nwr["addr:housenumber"];)->.addresses;
(nwr.addresses(around.highways:200);)->.addressesNearHighways;
(.addresses; - .addressesNearHighways;);
out geom meta;
edit:
Aczkolwiek jest to odwrotna kwerenda - czyli wyszukująca adresy, do której brakuje drogi o kategorii > track
Czy da się znajdować obiekty, które nie są za blisko siebie?
Próbuję wyłapać podwójne adresy po wsiach, czyli ma się zgadzać addr:place i addr:housenumber, ale chciałbym z wyników wykluczyć POI z adresem, znajdujące się w obrębie tego samego budynku. Wymyśliłem, że można by wyszukać takie pary, które nie są za blisko siebie, ale nie mam pojęcia, czy w ogóle da się taki warunek skonstruować…
Może być łatwiej przetworzyć pobrane dane, zwłaszcza jak chce się mieć sensowną wydajność
Ja mam trochę podobne zapytanie już gotowe i możesz je raczej łatwo dostosować do swoich potrzeb:
[out:json][timeout:30][bbox:{{bbox}}];
way[building]->.ww;
foreach.ww->.w
(
node['addr:housenumber'](area.w);
// ilość node adresowych wewnątrz obrysu,
// uwaga! sam obrys też może mieć już adres
if (count(nodes) == 1) {
.w out meta;
._ out meta;
}
);
Ale tak jak Mateusz powiedział, jak chcesz dobry performance to najlepiej jest pobrać całe dane i przetworzyć je lokalnie. Overpass ma dosyć ciężko z takimi operacjami .