Overpass - do wyciągania danych z OSM

Chyba nie rozumiem pytania. Co to jest “dowolny punkt bez centrum administracyjnego”? Co właściwie chcesz uzyskać?

Np. obrys dowolnej gminy, z zaznaczonym punktem, który nie jest tak jak w tym przypadku punktem wstawienia nazwy gminy a dowolnie wstawionym do bazy punktem o znanym np. numerze teryt.
Innymi słowy chcę uzyskać obrazek na którym obwiedziona kolorem będzie gmina i wskazany przeze mnie punkt - najlepiej bez tego żółtego tła.

To jest punkt z rolą admin_centre z wyszukanej relacji.

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

To możesz tak jak maraf24 napisał.

Możesz też wzorować się na http://overpass-turbo.eu/s/MBX i do tego dorzucić dowolny węzeł np po id.

Cześć,
od jakiegoś czasu analizuję i uzupełniam braki adresacji OSM względem punktyadresowe.pl na terenie Wielkopolski.
Od strony OSM do tego celu używam prostego zapytania overpass: przykładowy powiat.
Dane wyjściowe są sformatowane jako csv, ale przy końcu danych adresowych overpass dodaje puste wiersze, które nie są adresami.
Pytanie - jak zmienić to zapytanie, aby efektem były tylko adresy, bez pustych wierszy?

Usuń dwa ostatnie wiersze, to ci nie doklei węzłów z budynków z adresami.

Działa, ale usunięcie wierszy ‘way’ powoduje nieuwzględnienie w zapytaniu wszystkich adresów scalonych z budynkami.

Dwa ostatnie wiersze to

>;
out skel qt;

Teraz działa jak należy, dziękuję! :slight_smile:

Wyszło Overpass API 0.7.56:

https://dev.overpass-api.de/blog/total_0_7_56.html

Działa wam Overpass Turbo? U mnie nagle przestało działać.
“Błąd Nominatima. Nie można znaleźć obiektu o takiej nazwie: Wrocław”
Zniknął też przycisk “abort” przy przetwarzaniu kwerendy.

U mnie działa po staremu, czyli jest OK. Testowałem zapytanie o apteki we Wrocławiu http://overpass-turbo.eu/s/T1n

U mnie też już działa, widocznie jakieś chwilowe problemy.

Mam taką kwerendę JOSM-a


ford=yes child (highway type:way child (type=route type:relation))

Chcę to przerobić na Overpass QL. Znajduje ona brody, które leżą na drogach należących do różnych relacji tras.
W przypadku tras rowerowych wiele z nich jest wątpliwe i dodano je na wyrost celem skompletowania trasy bez sprawdzenia w terenie.

Wymyślone na szybko:
https://overpass-turbo.eu/s/Xrm

Nie wiem czy dokładnie o to Ci chodziło, ale opisałem kroki działania.

Potrzebuję pomocy, inspirowany Wiki tworzę skryptozakładkę (bookmarklet), która gdy jesteśmy na stronie z jakąś uwagą np. https://www.openstreetmap.org/note/2338496
otworzy nam w nowym oknie Overpass turbo i załaduje w tej pozycji dane OSM w stanie na moment utworzenia tej uwagi
(dla uwagi z linka powyżej: https://overpass-turbo.eu/s/XUA )

Kod działa gdy go wkleję do konsoli Firefoxa, ale nie umiem z niego zrobić skryptozakładki.
Jeśli ktoś się zastanawia dlaczego używam XHR do API OSM, to dlatego że data utworzenia uwagi na osm.org jest podana w języku użytkownika :wink:

javascript: (function() {
    id = location.href.match(/www\.openstreetmap\.org\/note\/(\d+)/);
    if (id != null) {
        var req = new XMLHttpRequest();
        req.open('GET', 'https://www.openstreetmap.org/api/0.6/notes/' + id[1] + '.json', false);
        req.send(null);
        var note = JSON.parse(req.responseText);
        var date = new Date(note.properties.date_created.replace(' UTC', ''));
        var lat = note.geometry.coordinates[1];
        var lon = note.geometry.coordinates[0];
        var zoom = 18;
        var isoDate = date.toISOString();
        var queryString = '[date:\"' + isoDate + '\"];\n(\n  node({{bbox}});\n  way({{bbox}});\n  \/\/relation({{bbox}});\n);\r\nout meta;\n>;\nout meta qt;';
        window.open('https://overpass-turbo.eu/?Q=' + escape(queryString) + '&C=' + lat + ';' + lon + ';' + zoom + '&R');
    } else {
        alert('This is not a valid OSM note page.')
    }
})()

W Chromie działa?

Tak.
Wiem do czego zmierzasz - gdy strona przekazuje nagłówek strict CSP, to Firefox nie pozwala uruchamiać skryptozakładek. (wg https://wiki.openstreetmap.org/wiki/Bookmarklet - Chrome się nie przejmuje)
Z tym, że to nieprawda, bo podana na Wiki skryptozakładka Achavi działa w Firefoxie 80.0.1 :roll_eyes:
(Przez jakiś czas w poprzednich wersjach rzeczywiście nie działała).
I mam tu zonka, bo jedyny request jaki robię, jest właśnie do openstreetmap.org. Overpass turbo otwieram w zupełnie nowej karcie.
Ogólnie w konsoli nie dzieje się zupełnie nic.

Edit: jakoś udało mi się sprawić, że działa :smiley:
Firefox z jakiegoś powodu ignoruje wklejane do paska URL-e z javascript: .
Po skasowaniu nowych linii i spacji da się to dodać do zakładek.

javascript:(function(){id=location.href.match(/www\.openstreetmap\.org\/note\/(\d+)/);if(id!=null){var req=new XMLHttpRequest();req.open('GET','https://www.openstreetmap.org/api/0.6/notes/'+id[1]+'.json',false);req.send(null);var note=JSON.parse(req.responseText);var date=new Date(note.properties.date_created.replace(' UTC',''));var lat=note.geometry.coordinates[1];var lon=note.geometry.coordinates[0];var zoom=18;var isoDate=date.toISOString();var queryString='[date:\"'+isoDate+'\"];\n(\n node({{bbox}});\n way({{bbox}});\n \/\/relation({{bbox}});\n);\r\nout meta;\n>;\nout meta qt;';window.open('https://overpass-turbo.eu/?Q='+escape(queryString)+'&C='+lat+';'+lon+';'+zoom+'&R');}else{alert('This is not a valid OSM note page.')}})()

A oto kolejna wersja, która potrafi odczytać datę aktualizacji map z uwag robionych w MAPS.ME:

javascript: (function() {
    var id = location.href.match(/www\.openstreetmap\.org\/note\/(\d+)/);
    if (id != null) {
        var req = new XMLHttpRequest();
        req.open('GET', 'https://www.openstreetmap.org/api/0.6/notes/' + id[1] + '.json', false);
        req.send(null);
        var note = JSON.parse(req.responseText);
        var date = new Date(note.properties.date_created.replace(' UTC', ''));
        var lat = note.geometry.coordinates[1];
        var lon = note.geometry.coordinates[0];
        var zoom = 18;
        var isoDate = date.toISOString();
        var noteText = note.properties.comments[0].text;
        var osmDataVersion = noteText.match(/OSM data version\: ([\d]{4}-[\d]{2}-[\d]{2}T[\d]{2}\:[\d]{2}\:[\d]{2}\Z)/);
        if (osmDataVersion != null) {
            isoDate = osmDataVersion[1];
        }
        var queryString = '[date:\"' + isoDate + '\"];\n(\n  node({{bbox}});\n  way({{bbox}});\n  \/\/relation({{bbox}});\n);\r\nout meta;\n>;\nout meta qt;';
        window.open('https://overpass-turbo.eu/?Q=' + escape(queryString) + '&C=' + lat + ';' + lon + ';' + zoom + '&R');
    } else {
        alert('This is not a valid OSM note page.')
    }
})()

I po zmniejszeniu:

javascript:(function(){var id=location.href.match(/www\.openstreetmap\.org\/note\/(\d+)/);if(id!=null){var req=new XMLHttpRequest;req.open("GET","https://www.openstreetmap.org/api/0.6/notes/"+id[1]+".json",false);req.send(null);var note=JSON.parse(req.responseText);var date=new Date(note.properties.date_created.replace(" UTC",""));var lat=note.geometry.coordinates[1];var lon=note.geometry.coordinates[0];var zoom=18;var isoDate=date.toISOString();var noteText=note.properties.comments[0].text;var osmDataVersion=noteText.match(/OSM data version\: ([\d]{4}-[\d]{2}-[\d]{2}T[\d]{2}\:[\d]{2}\:[\d]{2}\Z)/);if(osmDataVersion!=null){isoDate=osmDataVersion[1]}var queryString='[date:"'+isoDate+'"];\n(\n  node({{bbox}});\n  way({{bbox}});\n  //relation({{bbox}});\n);\r\nout meta;\n>;\nout meta qt;';window.open("https://overpass-turbo.eu/?Q="+escape(queryString)+"&C="+lat+";"+lon+";"+zoom+"&R")}else{alert("This is not a valid OSM note page.")}})();

Czy da się w overpass w {{geocodeArea:Kraków}} wpisać dwa miasta/regiony? Np. jeśli chciałbym jednocześnie Kraków i Poznań?