Overpass - do wyciągania danych z OSM

Czy jakiś magik wie dlaczego taka kwerenda (znajdź węzły i linie w Gdyni z name:* ale bez name) nie działa jak powinna?

[out:json][timeout:25];
{{geocodeArea:Gdynia}}->.searchArea;
(
  node[!"name"][~"^name\:"~"."](area.searchArea);
  way[!"name"][~"^name\:"~"."](area.searchArea);
);
out body;
>;
out skel qt;

Edit: Gdy zmienię “Gdynia” na “pomorskie” to zwrócone wcześniej węzły nie załapują się, co trochę przeczy logice.

jakie pomorskie? Województwo pomorskie.

Geokoder działa tak samo w obu przypadkach. Pominąłem “województwo” odruchowo, bo wcześniej Alt+O otwierało okno wczytania zapisanej kwerendy :stuck_out_tongue:

W sumie to “pomorskie” jest wpisane dla obszaru jako “short_name” także mogło by wychwycić, że taki obszar istnieje. Ciekawe czemu tak nie robi.

Postawiłem serwer Overpass’a, który zawiera dane tylko z Polski i aktualizuje się co minutę.

Adres dla Overpass Turbo:

//osm-cdn.vink.pl/api/

Dla zapytań bezpośrednich:

http://osm-cdn.vink.pl/api/interpreter

Sprawdźcie proszę, czy wszystko działa jak trzeba :slight_smile: wszelkie głosy ważne.

Dla chętnych - postawione w Dockerze z pomocą tego obrazka

Niestety 404 na

http://osm-cdn.vink.pl/api/

Wszystko się zgadza. Usługa działa pod adresem:

http://osm-cdn.vink.pl/api/interpreter

Natomiast jak sprawdzałem Overpass Turbo, to on sam dokleja interpreter, więc w Overpass Turbo trzeba podać bez interpreter.

Witam,
Czy istnieje możliwość “wyciągnięcia” danych: kodu pocztowego i jego (średniej?!) lokalizacji dla obszaru Polski?

Overpass zdaje się nie ma żadnych funkcji aggregujących/operujących na geometrii. Posłużyłbym się postgisem, np.:


SELECT ST_Buffer(ST_ConcaveHull(ST_Collect("way"), 0.99),1) AS geom,  
ST_Area(ST_Buffer(ST_ConcaveHull(ST_Collect("way"), 0.99),1))/1000000 AS area, 
"addr:postcode" FROM (
  SELECT "addr:postcode", "way" FROM planet_osm_point WHERE "addr:postcode" IS NOT NULL GROUP BY "addr:postcode", "way"
  UNION
  SELECT "addr:postcode", ST_Centroid("way") FROM planet_osm_polygon WHERE "addr:postcode" IS NOT NULL GROUP BY "addr:postcode", "way"
  ) AS dupa
GROUP BY "addr:postcode";

co wizualizuje się +/- następująco:

G.

Ciekawe czy dałoby radę przerobić to na diagram Woronoja albo jeszcze lepiej k-najbliższych sąsiadów (k-NN). Wtedy nie byłoby dziur.

https://postgis.net/docs/ST_VoronoiPolygons.html - ćwiczenia zostawię pytającemu :slight_smile:

G.

Dziękuję gsapijaszko.
Spróbuję skorzystać z Twojej rady. Co prawda jeszcze nie wiem jak (Qgis dopiero “liznąłem”), ale popróbuję.
Na moje potrzeby wystarczą dane “z dziurami”.

Jest jakiś sposób, żeby wyciągnąć tylko obiekty niewystające poza obszar?
W sensie, że np. mam w Polsce drogi spełniające określone warunki, ale chcę jeszcze odrzucić te, które kończą się poza Polską. Całą drogę, jeśli jej kawałek wystaje poza zadany obszar.

Potrzebuję dla relacji i linii.

Za radą gsapijaszko próbowałem uruchomić postgis. Zainstalowałam osm2pgsql, niestety wersja postgis -1.5.3, nie udostępnia rozszerzenia postgis bazy (jeżeli dobrze się wrażam :frowning: ). Import danych jest niemożliwy.
Czy ktoś zna rozwiązanie problemu bez konieczności upgreadu? Korzystam tylko ze stabilnej wersji Debiana Wheezy i tak chcę pozostać.

A zrobiłeś CREATE EXTENSION postgis; ?

Tak. W wersji 1.5 chyba właśnie w tym problem, że ten sposób jest niedostępny.

To jakiś przedpotopowy ten postgis :wink: Żarty “twoja stara jest tak stara, że znajduje się w repozytorium debiana stable” chyba nie są przesadzone :smiley:

:slight_smile: I tak jest w rzeczywistości. Nie wiem czy przed 20:00 można, ale znasz to - “Lepsza starsza i doświadczona …”?
Na takie okazje chwilowo instaluję Ubuntu. I jak nie znajdę sposobu tak zrobię i teraz.
Dzięki za zainteresowanie.

Eeee… moment… co ma wersja postgisa do importu danych?

Instalujemy postgres. Instalujemy postgis. Tworzymy bazę danych. Dodajemy rozszerzenie postgis (i ewentualnie hstore).

Do importu danych do tak utworzonej bazy danych można użyć osm2pgsql (to moja ścieżka) albo imposma (https://imposm.org/), którego używa m.in. SQ9NIT do swoich map.

Wersja postgisa będzie miała znaczenie na etapie późniejszym, niektóre funkcje są dostępne w nowszych wersjach.

Tu jest opis pożenienia qgisa z sqlite i osm: http://learnosm.org/en/osm-data/osm-in-qgis/. Do celu policzenia “centrum” położenia kodów adresowych może wystarczyć, później można po prostu policzyć średnią geometryczną dla współrzędnych X i Y.

Pozdrawiam,
Grzesiek

Może użyłem zbytniego skrótu “import”. Właśnie nie mogę dodać rozszerzenia postgis do utworzonej bazy (CREATE EXTENSION postgis;), z hstore daję radę. Jeżeli nie istnieje rozszerzenie bazy (wydaje się, że t0 jest powód) to osm2pgsql zgłasza błąd. W moim przypadku brak funkcji AddGeoColumns.
Dzięki za link. Też brałem pod uwagę konwersję osm do innej bazy . Sqlite byłoby ok.
Spróbuję.