Umkreissuche für Knoten (-Liste) | Hydrantenplan mit Straßen / HsNr

Hallo,

leider waren meine bisherigen Suchen dazu im Internet erfolglos. Da ich mich aber in das Thema gerade erst einarbeite, kann es auch sein, dass ich bisher nur die falschen Vokabeln bei der Suche benutzt haben. Über entsprechende Tipps und Hinweise würde ich mich daher sehr freuen.

Es geht grundsätzlich um das Erstellen und Verwalten von Hydrantenpläne. Wie man Hydranten auf OSM anleget, ergänzt und ändert habe ich in div. Hilfen gefunden und auch erfolgreich erste Einträge angelegt.

Allerdings benötige ich für div. Aktionen (z.B. Hydrantenkontrolle) ein Liste aller Hydranten in einem Ort.

Über ‘Overpass turbo’ habe ich einge Möglichkeit gefunden, eine entsprechende Liste ‘grundsätzlich’ zu erzeugen (auch als CSV). Ich habe ebenfalls einige Beispiel dazu gefunden, diese Liste auf einen bestimmten Ort einzuschränken. Was aber noch fehlt sind bestimmte zusätzlichen Informationen.

Abfrage bei https://overpass-turbo.eu/:


[out:json][timeout:25];
(
  node["emergency"="fire_hydrant"]({{bbox}});
);
out body;
>;
out skel qt;

Ausschnitt aus dem Ergebnis:


...
{
  "type": "node",
  "id": 2388259164,
  "lat": 51.5776649,
  "lon": 7.7101357,
  "tags": {
    "emergency": "fire_hydrant",
    "fire_hydrant:diameter": "200",
    "fire_hydrant:position": "sidewalk",
    "fire_hydrant:type": "underground"
  }
},
...

Das sind zwar alle Hinterlegten Daten, nur darüber den Hydrant ‘auf der Straße’ zu finden ist schwierig bis unmöglich ohne GSP-Unterstützung.

Ich habe div. Diskussionen gefunden, noch weitere Tags wie Straße und Hausnummer hinzuzufügen, das halte ich aber nicht für sehr sinnvoll.

Gibt es die Möglichkeit sich die nächstgelegen Straße und Hausnummer mit anzeigen zu lassen (ggf. auf einen best. Umkreis zu beschränken)?

Bei meinen Recherchen habe ich auch die API vom OSM gefunden und über Skript mit entsprechenden Schleifen sollte das evtl. auch machbar sein; ich möchte aber unabhängig von irgendwelchen lokalen Skripten und Programm-Installationen sein, mit dem Ziel, dass jeder Kamerad sich jederzeit eine aktuelle Liste erzeugen kann.

Schreib bei jedem Hydrant die Standortangabe wie “Mittelstraße 12, Gehweg, linke Haushälfte” in das description-tag. Dann hast Du genau den gewünschten Eintrag in Deiner Liste und auch in Anwendungen wie z.B. OsmAnd.

Wieso description? Ich kann mich täuschen, aber ich glaube http://osmhydrant.org legt solche Informationen in note ab.

Dann sollten die sich mal den Unterschied zwischen note (für Mapper) und description * (für Endbenutzer)*anschauen.

Hatte ich auch schon einige Male angesprochen. Das ist ein leidiges Problem - auch iD verwendet note für Hinweis. Vielleicht ist es schon zu spät dies alles “richtig zu stellen”.

Aber zurück zum eigentlichen Thema, ich kenne mich leider nicht wirklich damit aus, aber in PostGis gibt es doch bestimmt eine Funktion st_nearest.

Jo, man berechnet die Distanz mit ST_Distance(geom1,geom2)und sortiert die absteigend.

Gruss
walter

Aber dazu müsstest du doch schon wissen, welcher addr-Node der nächstgelegene ist?! Aber der Threadersteller will ja zu einem Hydranten erst mal die nächstgelegene Adresse finden.

geom1: Location des Hydranten, geom2: Location der Adresse

Schleife über die Hydranten einer Stadt,
darin Berechnung der Distanzen zu den Adressen der Stadt
diese sortiert nach absteigender Distanz
limit 1 bringt die nächste Adresse zu diesen Hydranten
ende

Gruss
walter

Oder so…

Vorschläge?

Man könnte jetzt natürlich eine Schleife über die Adressen machen und dann den nächsten Hydranten suchen - denkt man.

Wenn man sich nämlich mit Explain den Query-Plan von PostGIS ansieht, erkennt man, dass PostGIS genau das macht, was es für richtig hält. Ok, mit einer PG/SQL-Funktion könnte man PostGIS “zwingen”, das genau so zu machen, wie man es für richtig hält. Inzwischen bin ich aber davon abgekommen, da der PostGIS-Planner immer “Sieger” war.

Gruss
walter

Wenn es zeitlich wirklich reinhaut, dann kann man das Folgende machen:

Man stellt die Koordinaten in Festkommadarstellung dar und verzahnt die Bits der beiden Koordinaten nach Reißverschlussprinzip. Am Besten so, dass aufeinanderfolgende Bits monoton fallende Entfernungen repräsentieren. Nach diesem Wert wird die Liste der Objekte sortiert. Dann hat man sehr gute Chancen, den nächstgelegenen Node in den benachbarten Elementen zu finden. Mit jedem gefundenen Objekt wird das Kriterium enger, nach dem die Suche beendet werden kann. (Das kann man noch verfeinern, aber da muss man genau nachrechnen was sich noch lohnt und was nicht).

Weide

Nachtrag: Vorsicht beim veröffentlichen! Ich kann mich dunkel an irgendwelche Mist-Patente-Diskussionen erinnern und dass von “Prior Art” die Rede war. Ich weiß aber nicht mehr, was dabei raus gekommen ist.

Irrtümlichen Beitrag gelöscht