Forum: PC-Programmierung aus einer Calc-Tabelle mit 100 Zeilen (mit Adress-Daten) eine Nearby-Suche via PLZ zu arrangieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin K. (dilbert_man)


Lesenswert?

Nabend Leute,

ist das zweckmäßig, aus einer Calc-Tabelle mit 100 Zeilen (mit 
Adress-Daten) eine Nearby-Suche via PLZ zu arrangieren!?


Hintergrund: die Tabelle - sie könnte mit 100 Zeilen etwa aussehen wie 
hier gezeigt:
1
+---------+---------+----------+----------+----------+---------+
2
|  Col1   |  Col2   |   Col3   |   col4   |   col5   |   col6  |
3
+---------+---------+----------+----------+----------+---------+
4
| Value 1 | Value 2 | Value 3  | Value 4  | Value 5  | Value 6 |
5
| data 1  | data 2  | data 3   | data 4   | data 5   | data 6  |
6
+---------+---------+----------+----------+----------+---------+

Hmm - das sollte m.E. gehen so dass ich die 10 Einträge finde, die in 
der Nähe liegen
1
PLZsearch eingeben
2
abs(PLZ - PLZsearch) berechnen
3
Aufsteigend sortieren

schwierig dabei: PLZ  80000 kann deutlich weiter weg von 81112 liegen 
als von 79000
1
Pseudo-SQL:
2
SELECT TOP 10 PLZ
3
FROM locations
4
ORDER BY abs(PLZ - PLZsearch) ASC


ES könnte auch gehen über eine OSM-Abfrage - was gegebenenfalls 
eleganter wäre...
#

was meint ihr denn!?

von Jens G. (jensig)


Lesenswert?

Martin K. schrieb:
> ist das zweckmäßig, aus einer Calc-Tabelle mit 100 Zeilen (mit
> Adress-Daten) eine Nearby-Suche via PLZ zu arrangieren!?

Komische Frage. Eigentlich mußt Du das doch wissen, ob es für Dich 
zweckmäßig genug ist, mit allen Vor- und Nachteilen.

von Martin K. (dilbert_man)


Lesenswert?

guten Abend,

Danke für die Rückmeldung. Bin im Moment noch am Überlegen - was das 
beste Verfahren ist:


also eine OSM-Abfrage - die könnte z.B. so aussehen:

1
[out:csv(::id,::type,::lon,::lat,amenity,name,"addr:postcode","addr:city","addr:street","addr:housenumber","contact:website",website,"contact:email")]
2
[timeout:600];
3
rel[boundary=administrative][admin_level=6][name="München"] -> .city;
4
(nwr[amenity=hospital][name](around.city:300);
5
nwr[amenity=school][name](around.city:300);
6
nwr[amenity=church][name](around.city:300);
7
nwr[amenity=childcare][name](around.city:300);
8
nwr[amenity=nursing_home][name](around.city:300););
9
out center;

und das hier rausgeben:
1
@id  @type  @lon  @lat  amenity  name  addr:postcode  addr:city  addr:street  addr:housenumber  contact:website  website  contact:email
2
703266518  node  11.5746643  48.1387135  school  EAM School of International Business  80331  München  Frauenplatz  11  https://eam-muenchen.com/    
3
1187338076  node  11.6800258  48.0835510  childcare  Little Giants  81739  München  Asenweg  18    https://www.littlegiants.de/kitas/kita/muenchen-waldperlach/  
4
1187338193  node  11.6779495  48.0840912  childcare  Kinderhaus Waldperlach  81739  München  Asenweg  2    https://www.kinderhaus-muenchen.de  
5
1729066349  node  11.5102086  48.0664804  school  Private Realschule Gut Warnberg  81479  München  Warnbergstraße  1  https://www.rs-gutwarnberg.de/    info@rs-gutwarnberg.de
6
2473262857  node  11.4545099  48.1342614  childcare  Joki Kinderbetreuung  81241  München  Haidelweg  46    https://www.joki-kinderbetreuung.de/kinderkrippe-und-kindergarten-pasing/  
7
2501713471  node  11.6578738  48.0784633  school  VHS Kursort  85579  Neubiberg  Floriansanger  3      
8
2598851386  node  11.4735908  48.0912553  nursing_home  "Seniorenzentrum ""Marie-Anne Clauss"""  81475  München  Luganoweg  8    https://www.asb-casa-vital.de/standorte/muenchen  
9
5519108148  node  11.7160022  48.1086623  school  Fachoberschule Haar  85540  Haar  Hans-Pinsel-Straße  10  https://www.fos-haar.de/    
10
5577008361  node  11.4551544  48.1342704  childcare  Joki Kinderbetreuung      Haidelweg  50    https://www.joki-kinderbetreuung.de/kinderkrippe-und-kindergarten-pasing/  
11
8738973632  node  11.4613520  48.2171555  school  Schulhof              
12
8738973633  node  11.4608265  48.2168719  school  Lorenz-Platz              
13
13792215  way  11.5574673  48.0856519  hospital  München Klinik Harlaching  81545  München  Sanatoriumsplatz  2  https://www.muenchen-klinik.de/krankenhaus/harlaching/    info.kh@muenchen-klinik.de
14
17012780  way  11.4694572  48.1105025  hospital  Klinikum Großhadern  81377  München  Marchioninistraße  15    https://www.lmu-klinikum.de/das-klinikum/standorte/zukunft-grosshadern/c57c2b5efc57b0df  
15
19802400  way  11.6635962  48.0779269  school  Grundschule Neubiberg              
16
23862460  way  11.6253391  48.0847974  school  Grundschule Unterbiberg              
17
24404965  way  11.6780626  48.0814292  school  Grundschule Gänselieselstraße 33  81739  München  Gänselieselstraße  33  https://gaenselies.musin.de/    
18
25455375  way  11.6376401  48.0865639  school  Grundschule Dietzfelbingerplatz 5  81739  München  Dietzfelbingerplatz  5    https://gsdietzi.musin.de/  
19
37574728  way  11.7069400  48.1323553  school  Berufliches Schulzentrum an der Astrid-Lindgren-Straße              
20
41956564  way  11.6406282  48.0822013  hospital  Gebäude 34: Sanitätszentrum Neubiberg  85579  Neubiberg  Werner-Heisenberg-Weg  134      
21
43993056  way  11.6818769  48.1421983  school  Christophorus-Schule  81829  München  Leibengerstraße  16  https://www.christophorus-schulverein.de/christophorus-schule/unsere-einrichtungen/schule    huegel@christophorus-schulverein.de
22
43994788  way  11.6747784  48.1442993  school  Staatliche Berufsschule München-Land              
23
90432980  way  11.4238592  48.1351858  school  Förderschule und Heilpädagogische Tagesstätte  81249  München  Köferinger Straße  20  https://www.helfende-haende.org/    
24
98318219  way  11.4188713  48.1271027  hospital  Würmtalklinik            https://www.suchtklinik-muenchen.de/  
25
166163325  way  11.5255445  48.0665770  school  Otfried-Preußler-Gymnasium Pullach              
26
178814915  way  11.3856710  48.1940064  school  Waldorfschule Gröbenzell              
27
266209371  way  11.5258823  48.0664125  school  Otfried-Preußler-Gymnasium Pullach    Pullach i. Isartal  Hans-Keis-Straße  61    https://www.opg-pullach.de/  
28
304916708  way  11.6809408  48.1436699  school  Grundschule und Tagesheim              
29
327101857  way  11.5611767  48.0850353  school  Katholische Fachakademie für Sozialpädagogik München    München  Theodolindenstraße  24    https://kfaks.de/  
30
361647224  way  11.4457504  48.1371095  school  Samuel-Heinicke-Fachoberschule  81243  München  Dachstraße  19    https://augustinum.de/samuel-heinicke-fachoberschule/  
31
553026479  way  11.4613641  48.2173822  school  Verbandsgrundschule München-Karlsfeld      Schulstraße  8    https://www.karlsfeld.de/Verbandsgrundschule-Karlsfeld.o630.html  
32
586885262  way  11.4184399  48.1266247  school  Akademie des bayerischen Bäckerhandwerks      Josef-Schöfer-Straße  1    https://baecker-bayern.de/akademie/  
33
808705398  way  11.6938169  48.1277207  school  Grund- und Mittelschule an der Lehrer-Wirth-Straße 31  81829  München  Lehrer-Wirth-Straße  31  https://www.lehrerwirth.de/    
34
1134658711  way  11.5567753  48.0798625  hospital  Klinik Menterschwaige  81545  München  Geiselgasteigstraße  203    https://www.klinik-menterschwaige.de/  
35
1205813455  way  11.5564806  48.0850004  hospital  Krankenhaus für Naturheilweisen    München  Seybothstraße  65    https://www.krankenhaus-naturheilweisen.de/  
36
1214803784  way  11.7161357  48.1068322  childcare  Am Wieselweg              
37
1214803785  way  11.7161728  48.1067315  childcare  Gemeindekrippe Wieselweg      Wieselweg  1b    https://www.gemeinde-haar.de/de/leben/Kitas/Kita?view=publish&item=nursery&id=1030  
38
6172896  relation  11.4694572  48.1105025  hospital  Klinikum der Universität München

von Peter M. (r2d3)


Lesenswert?

Hallo Jens G.,

Jens G. schrieb:
> Komische Frage. Eigentlich mußt Du das doch wissen, ob es für Dich
> zweckmäßig genug ist, mit allen Vor- und Nachteilen.

das dachte ich auch.

Der Frager sucht eine koordinatenfreie Lösung! :)

Darüber hinaus gibt es anscheinend keinen Bezug zwischen der mit den 
Zeilennummern 1-6 bezeichneten Tabelle und dem, was darunter steht.
Da fehlt mir jetzt Foresee Forte zum einwerfen. :)

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Martin K. schrieb:
> schwierig dabei: PLZ  80000 kann deutlich weiter weg von 81112 liegen
> als von 79000

Noch etwas krasser:

Etzleben (PLZ 06577) und Schillingstedt (PLZ 99610) liegen in direkter
Nachbarschaft (4,3 km Fahrstecke), die PLZ-Differenz ist aber 93033.

von Martin K. (dilbert_man)


Lesenswert?

tatsächlich:

>Noch etwas krasser:


>Etzleben (PLZ 06577) und Schillingstedt (PLZ 99610) liegen in direkter
>Nachbarschaft (4,3 km Fahrstecke), die PLZ-Differenz ist aber 93033.

von Mario M. (thelonging)


Lesenswert?

Yalu X. schrieb:
> PLZ-Differenz ist aber 93033

Mit Übertrag gerechnet sind es "nur" 6967.

von Εrnst B. (ernst)


Lesenswert?

Tabelle hier
https://github.com/WZBSocialScienceCenter/plz_geocoord
herunterladen.

In deiner Tabelle per SVERWEIS etc. die Koordinaten zur PLZ eintragen.
Annehmen dass Deutschland "flach genug" ist.
Pythagoras.

von Martin K. (dilbert_man)


Lesenswert?

hallo Ernst,

vielen Dank für dein Posting.
1
Tabelle hier
2
https://github.com/WZBSocialScienceCenter/plz_geocoord
3
herunterladen.

Danke!
1
In deiner Tabelle per SVERWEIS etc. die Koordinaten zur PLZ eintragen.
2
Annehmen dass Deutschland "flach genug" ist.
3
Pythagoras.

ja ... ich denke dass das näherungsweise hilft!
 Vielen Dank nochmals!!

viele Grüße

: Bearbeitet durch User
Beitrag #7723742 wurde vom Autor gelöscht.
von Martin K. (dilbert_man)


Lesenswert?

und damit ich die Orte  noch dabei habe - nehme ich diesen DATENSATZ und 
baue ihn dazu: https://www.suche-postleitzahl.org/downloads

# (download zuordnung_plz_ort.xls)

von Martin S. (sirnails)


Lesenswert?

Εrnst B. schrieb:
> Annehmen dass Deutschland "flach genug" ist

Ob der fiktive Weg einen Kreisbogen beschreibt, oder durch einen 
Höllentunnel bis in die Lava führt, ist doch für die 
Entfernungsberechnung egal. Er will ja nicht die absolute Distanz, 
sondern nur einen Vergleich, was weiter weg ist.

Martin K. schrieb:
> und das hier rausgeben:

Ist doch gut. Da hast Du doch Längen- und Breitengrad. Du willst doch 
nur die Differenz bestimmen und mit Pythagoras ausrechnen, wie weit das 
weg ist. Der exakte Wert ist dann auch egal für den reinen 
Entfernungsvergleich. Rechne die Grad und Minuten in Sekunden um, dann 
kannst Du mit einfachen Werten rechnen.

Die Frage ist: Soll das eine generische Lösung sein, oder eine 
einmalige?

von Martin K. (dilbert_man)


Lesenswert?

hallo Martin,

Danke für deine Rückmeldung.  Freue mich sehr!  Das ist ein sehr sehr 
hilfreicher Thread denn ich bin hier tatsächlich noch nicht ganz im 
klaren wie ich das umsetzen kann.

Gedacht ist eher an eine generische Lösung - es soll eine Abfrage 
möglich sein - die auf einem Webfrontend läuft.
1
Die Frage ist: Soll das eine generische Lösung sein, oder eine einmalige?

hmmm - ich frag mich was geeigneter ist.

eine Lsg. die Tabellengestützt ist oder - eher direkt an einem OSM-API 
ansetzt und mir Daten liefert.


die Tabelle:
1
+---------+---------+----------+----------+----------+---------+
2
|  Col1   |  Col2   |   Col3   |   col4   |   col5   |   col6  |
3
+---------+---------+----------+----------+----------+---------+
4
| Value 1 | Value 2 | Value 3  | Value 4  | Value 5  | Value 6 |
5
| data 1  | data 2  | data 3   | data 4   | data 5   | data 6  |
6
+---------+---------+----------+----------+----------+---------+

und hier: ...also in den Spalten wäre dann drinne - etwa:
Ort bzw. Kommunen
Schulen
Kindergärten
Seniorenheime..

generell kann ich das über eine OSM Abfrage - (am Endpoint) 
bewerkstelligen:
ggf. so :
1
[out:csv(::id,::type,::lon,::lat,amenity,name,"addr:postcode","addr:city","addr:street","addr:housenumber","contact:website",website,"contact:email")]
2
[timeout:600];
3
area[name="München"];
4
nwr(area)[name="Marienplatz"];
5
nwr["amenity"="school"](around:400);
6
out center;

https://overpass-turbo.eu/s/1Q4N

1
@id  @type  @lon  @lat  amenity  name  addr:postcode  addr:city  addr:street  addr:housenumber  contact:website  website  contact:email
2
703266518  node  11.5746643  48.1387135  school  EAM School of International Business  80331  München  Frauenplatz  11  https://eam-muenchen.com/    
3
1096318121  node  11.5827303  48.1368214  school  Otto-Falckenberg-Schule  80539  München  Stollbergstraße  7a    https://www.otto-falckenberg-schule.de/  
4
1096318127  node  11.5822067  48.1376239  school  Otto-Falckenberg-Schule  80539  München  Falckenbergstraße  2    https://www.otto-falckenberg-schule.de/  
5
1576527684  node  11.5728245  48.1336093  school  Theresia-Gerhardinger-Grundschule am Anger            https://gs-am-anger.de/  
6
1576528339  node  11.5721671  48.1333479  school  Theresia-Gerhardinger-Gymnasium am Anger            https://www.tggaa.de/  
7
2493656150  node  11.5814603  48.1366835  school  Förderschule an der Herrnstraße  80539  München  Herrnstraße  21    https://stadt.muenchen.de/service/info/sonderpaedagogisches-foerderzentrum-muenchen-mitte-2-herrnstr-21/1060084/  
8
2654727020  node  11.5812823  48.1365482  school  Grundschule an der Herrnstraße  80539  München  Herrnstraße  21    http://www.gsh.musin.de/  
9
10699471303  node  11.5677077  48.1353987  school  Lehrinstitut Bauer  80331  München  Kreuzstraße  14    https://lehrinstitut.de/  
10
81645897  way  11.5792142  48.1347854  school  Städtische Riemerschmid Wirtschaftsschule München  80469  München  Frauenstraße  19  http://www.rws.musin.de/    ws-riemerschmid@muenchen.de


oder etwa ähnlich:
1
[out:csv(::id,::type,::lon,::lat,amenity,name,"addr:postcode","addr:city","addr:street","addr:housenumber","contact:website",website,"contact:email")]
2
[timeout:600];
3
rel[boundary=administrative][admin_level=6][name="München"] -> .city;
4
(nwr[amenity=hospital][name](around.city:400);
5
nwr[amenity=school][name](around.city:400);
6
nwr[amenity=church][name](around.city:400);
7
nwr[amenity=childcare][name](around.city:400);
8
nwr[amenity=nursing_home][name](around.city:400););
9
out center;



darüber hinaus hab ich mir noch das hier angesehen: Geocoding (Teil 1) : 
PLZ Umkreissuche mit Elasticsearch, Groovy, JQuery und der Google Maps 
API
https://www.exensio.de/news-medien/newsreader-blog/geocoding-teil-1-plz-umkreissuche-mit-elasticsearch-groovy-jquery-und-der-google-maps-api
1
Mit diesem Blogpost möchte ich aufzeigen, wie einfach es ist, mit Elasticsearch eine Postleitzahlenumkreissuche zu realisieren. Viele SQL Datenbanken unterstützen die Verarbeitung von Geodaten. Manche nicht, hier muss man demzufolge selber die mathematischen Algorithmen entwickeln, oder Beispiele aus dem Internet benutzen. Wird Elasticsearch bereits als Suchmaschine eingesetzt, liegt es nahe, diese auch für eine PLZ-Umkreissuche wiederzuverwenden. Als Beispiel habe ich mir eine Umkreissuche überlegt, die die nächsten IKEA Häuser im Umkreis einer Postleitzahl findet. Den gesamten Quellcode und alle Datenfiles kann man von unserem Web-Server laden [1].

hmmm - klar also ja man braucht erstmal die Geodaten der PLZ um 
überhaupt irgendwas berechnen zu können.


ich kann jedenfalls die Daten von Ernst  verbinden mit diesem Datensatz: 
https://www.suche-postleitzahl.org/plz-karte-erstellen

Geokoordinaten für Postleitzahlen / Geocoordinates for German postal 
codes ("PLZ")
1
Januar 2019, Markus Konrad markus.konrad@wzb.eu / Wissenschaftszentrum Berlin für Sozialforschung
2
Datensatz mit allen verortbaren PLZ in Deutschland und deren geographischer Mittelpunkt als WGS84 Longitude / Latitude Geokoordinate. PLZ stammen aus dem Gemeindeverzeichnis des statistischen Bundesamtes. Die Geokoordinaten wurden ermittelt mittels Google Cloud Geocoding API am 07.01.2019.



https://www.suche-postleitzahl.org/downloads# (download 
zuordnung_plz_ort.xls)

https://www.suche-postleitzahl.org/plz-karte-erstellen
Übersicht
1
Die Postleitzahlenkarten werden in verschiedenen Formate (GeoJSON, Shapefile, SVG, u.a.) online angeboten.
2
Die Wahl der Genauigeit bestimmt die Dateigröße und dies ohne Verlust von Leitgebieten - auch die Grenzverläufe bleiben bündig und somit lückenlos.
3
Abhängig vom Einsatzzweck der Geodaten kann zwischen zwei Projektionen gewählt werden: EPSG:3857 webmercator und EPSG:4326 wgs84
4
In Zukunft wird das Export-Angebot um CSV und Excel-Dateien als Liste erweitert. Des Weiteren fügen wir folgendes den GIS-Daten hinzu: Bounding Box (bbox) und ggf. das KML-Format.


Geodaten
1
Jeder Postleitzahl ist die jeweilige Einwohnerzahl und die Fläche in Quadratkilometer zugeordnet.
2
Im 5-stelligen Bereich gibt es zusätzlich das Datenfeld note, welche eine kurze Beschreibung des Postleitzahlengebietes enthält.
3
Zum einen bieten wir aktuell detaillierte Postleitzahlengrenzen als Polygone zum Download an, des Weiteren können auch ausschließlich die Mittelpunkte (Centroid) mit Breitengrad und Längengrad heruntergeladen werden. Über weitere Tools wie QGis können eigene Daten mit den Postleitzahlen verknüpft werden. In unserem Downloadbereich finden Sie weitere kostenlose Postleitzahl-Geodaten und Hilfe.


hmmm - ich frag mich was geeigneter ist: eine Lsg. die Tabellengestützt 
ist oder - eher direkt an einem OSM-API ansetzt und mir Daten liefert.

Jedenfalls  bin ich sehr froh über eure Rückmeldungen.  Freue mich sehr! 
Denn ja: Das ist ein sehr sehr hilfreicher Thread; ich glaub dass er mir 
sehr weiterhilft - herauszufinden was der beste Weg ist -

Euch allen einen schönen  Abend,

viele Grüße

von Ralf D. (doeblitz)


Lesenswert?

Martin K. schrieb:
> Nabend Leute,
>
> ist das zweckmäßig, aus einer Calc-Tabelle mit 100 Zeilen (mit
> Adress-Daten) eine Nearby-Suche via PLZ zu arrangieren!?

Nein, PLZ taugen dazu nicht direkt.

Normal greift man sich dazu eine PLZ-Karte (konnte man vor Jahren mal 
bei der Post absaugen, erforderte nur leichte Nachbearbeitung), 
schmeisst die in ein GIS rein (dazu reicht schon vollkommen eine 
erweiterung wie PostGIS für Postgresql aus), und ermittelt dann den 
echten Abstand zur jeweiligen PLZ-Grenze. Alternativ kann man auch 
Schwerpunkte der PLZ-Gebiete nehmen. Spassig wird es bei PLZ-Gebieten, 
die aus mehreren disjunkten Flächen bestehen (sind nur wenige, aber sie 
existieren), da will man wieklich mit den Grenzen und nicht mit den 
Schwerpunkten arbeiten.

Ich habe das vor Jahren mal dienstlich implementiert (wo liegt die für 
den Benutzer nächste Filiale). Direkte Verwendung von PLZ führt an 
diversen Stellen in Deutschland, insbesondere an den Grenzen der 
Postleitzonen (erste Stelle), zu extrem unbrauchbaren Ergebnissen.

von Martin K. (dilbert_man)


Lesenswert?

Hallo Ralf,

vielen Dank für Deine Rückmeldung - und die Erläuterungen und Tipps. 
Deine Ideen zur Umkreissuche, die leuchten ein.


>Nein, PLZ taugen dazu nicht direkt.

ja - PLZ mit GEO-Daten scheinen hier der Weg zu sein:

>Normal greift man sich dazu eine PLZ-Karte (konnte man vor Jahren mal bei der 
Post absaugen, erforderte nur leichte Nachbearbeitung),

Ja, das denke ich auch: ich hab unten noch ein paar Quellen gelistet - 
und denke dass diesbezüglich etwas dabei sein sollte.


Zurück zur generellen Aufgabe .... Das Tool soll suchen: also etwa so:
1
..Gib Deinen Ort ein
2
Wo möchtest du Suchen (Ort/PLZ)?
3
Möglicher Umkreis
4
Suchen!

entweder aus einer
a. Tabelle oder
b. am OSM-Endpunkt

a. die Tabelle:
1
+---------+---------+----------+----------+----------+---------+
2
|  Col1   |  Col2   |   Col3   |   col4   |   col5   |   col6  |
3
+---------+---------+----------+----------+----------+---------+
4
| Value 1 | Value 2 | Value 3  | Value 4  | Value 5  | Value 6 |
5
| data 1  | data 2  | data 3   | data 4   | data 5   | data 6  |
6
+---------+---------+----------+----------+----------+---------+


und hier: ...also in den Spalten - wäre dann drinne - etwa:

1
Col1: Ort bzw. Kommunen
2
Col2: amenity2
3
Col3: amenity3
4
Col4: amenity4
5
Col5: amenity5
6
Col6: amenity6

mit amenity: https://wiki.openstreetmap.org/wiki/Key:amenity
amenity=* useful and important facilities..: such as toilets, 
telephones, banks, pharmacies, prisons and schools.

Ansatz:

Hmm - das sollte m.E. gehen, so dass ich die 10 Einträge finde, die in
der Nähe liegen
1
PLZsearch eingeben
2
abs(PLZ - PLZsearch) berechnen
3
Aufsteigend sortieren


schwierig dabei: PLZ  80000 kann deutlich weiter weg von 81112 liegen
1
als von 79000
2
Pseudo-SQL:
3
SELECT TOP 10 PLZ
4
FROM locations
5
ORDER BY abs(PLZ - PLZsearch) ASC


oder via Query an  Query an OSM Overpass API Endpoint

1
[out:csv(::id,::type,::lon,::lat,amenity,name,"addr:postcode","addr:city","addr:street","addr:housenumber","contact:website",website,"contact:email")]
2
[timeout:600];
3
rel[boundary=administrative][admin_level=6][name="Rosenheim"] -> .city;
4
(nwr[amenity=hospital][name](around.city:400);
5
nwr[amenity=school][name](around.city:400);
6
nwr[amenity=church][name](around.city:400);
7
nwr[amenity=childcare][name](around.city:400);
8
nwr[amenity=nursing_home][name](around.city:400););
9
out center;

1
@id  @type  @lon  @lat  amenity  name  addr:postcode  addr:city  addr:street  addr:housenumber  contact:website  website  contact:email
2
7994893  way  12.1324795  47.8601936  hospital  RoMed Klinikum Rosenheim  83022  Rosenheim  Pettenkoferstraße  10      
3
60144249  way  12.1311216  47.8527009  school  Sebastian-Finsterwalder-Gymnasium  83022  Rosenheim  Königstraße  25      
4
98426045  way  12.1325735  47.8529561  school  Johann-Rieder-Realschule              
5
98632610  way  12.1291873  47.8555163  school  Wirtschaftsschule  83022  Rosenheim  Königstraße  1      
6
116852488  way  12.1348781  47.8603729  school  Schule an der Heckscher-Klinik              
7
137231022  way  12.1321462  47.8611887  school  Berufsfachschule  83022  Rosenheim  Lilienweg  10      
8
144304611  way  12.0727209  47.8532557  nursing_home  Altenheim St. Franziskus Kolbermoor      Flurstraße  6      
9
233704680  way  12.1429482  47.8315999  school  Freizeitgelände Stadtjugendring Rosenheim



>Normal greift man sich dazu eine PLZ-Karte (konnte man vor Jahren mal bei der 
Post absaugen, erforderte nur leichte Nachbearbeitung), schmeisst die in ein GIS 
rein (dazu reicht schon vollkommen eine erweiterung wie PostGIS für Postgresql 
aus), und ermittelt dann den echten Abstand zur jeweiligen PLZ-Grenze. Alternativ 
kann man auch Schwerpunkte der PLZ-Gebiete nehmen. spassig wird es bei 
PLZ-Gebieten, die aus mehreren disjunkten Flächen bestehen (sind nur wenige, aber 
sie existieren), da will man wirklich mit den Grenzen und nicht mit den 
Schwerpunkten arbeiten.


Danke - ja leuchtet ein!!



btw: zu deiner Idee, hier noch DATENmaterial oder Tabellen einzusetzen 
hier hab ich noch was gefunden :

Geokoordinaten für Postleitzahlen / Geocoordinates for German postal 
codes ("PLZ")
https://github.com/WZBSocialScienceCenter/plz_geocoord

Januar 2019, Markus Konrad markus.konrad@wzb.eu / Wissenschaftszentrum 
Berlin für Sozialforschung
Datensatz mit allen verortbaren PLZ in Deutschland und deren 
geographischer Mittelpunkt als WGS84 Longitude / Latitude Geokoordinate. 
PLZ stammen aus dem Gemeindeverzeichnis des statistischen Bundesamtes. 
Die Geokoordinaten wurden ermittelt mittels Google Cloud Geocoding API 
am 07.01.2019.

https://www.spassmitdaten.de/2021/06/20/postleitzahlengebiete-plz-/

https://opendata-esri-de.opendata.arcgis.com/datasets/esri-de-content::postleitzahlengebiete-in-deutschland/about

viele Grüße

von Ralf D. (doeblitz)


Lesenswert?

Um noch mal ein Beispiel für die schlimmsten Problemstellen bei der 
Verwendung von PLZ zu zeigen:

Im Bereich Breitenstein stoßen die Postleitzonen 0, 3 und 9 aneinander. 
Da liegen dann unmittelbar benachbart die PLZ 06493, 38899 und 99768.

Deratige Situationen gibt es eine Handvoll in ganz DE - wenn die eigenen 
Anwendungsfälle davon weit genug entfernt sind ist das evtl. tragbar, 
aber ansonsten gibt es an den Grenzen der Postleitzonen einfach zu viel 
Probleme.

Wenn es um Gemeindedaten mit Georeferenz und PLZ geht: da gibt es bei 
DeStatis im gemeindeverezichnis direkt die Mittelpunktskoordinaten der 
jeweiligen Gebietskörperschaften (bei Satzart 60).

Aber eigentlich lässt bei hinreichender Hardware das Problem viel 
einfacher lösen. ;-)
Man muss "nur" einen Auszug der OpenStreetMap für Deutschland in eine 
eigene Datenbank kübeln und dort dann direkt mit den Koordinaten des 
Suchenden (Geolocation hat heute ja praktisch jedes Smartphone drin) die 
Umgebungssuche starten. PostGIS macht einem das Leben da extrem einfach.

Ich habe dafür vor ca. 10 Jahren mal eine Maschine mit 64 GB RAM 
verwendet, der Datenimport hat knapp zwei Tage gedauert. Aber die damit 
nutzbaren Funktionen waren dann schon geil. :-)

von Michi S. (mista_s)


Lesenswert?

Ralf D. schrieb:
> Spassig wird es bei PLZ-Gebieten,
> die aus mehreren disjunkten Flächen bestehen
> (sind nur wenige, aber sie existieren),
> da will man wieklich mit den Grenzen und nicht
> mit den Schwerpunkten arbeiten.

Will man? Welche Grenzen nimmt man dann? Also v.a. die Grenze welchen 
Teilgebiets?
Schließlich wird die reale Aufgabenstellung selten lauten: Ermittle die 
Entfernung zum nächstgelegenen Punkt eines bestimmten PLZ-Gebiets.
Realistischer wäre da ja wohl: Wir haben Filialen in diesem, jenem und 
noch 27 anderen PLZ-Gebieten; welche ist näherungsweise die 
nächstgelegene?
Wenn ich in diesem Fall bzgl. eines disjunkten Gebietes nicht mehr Info 
habe, als 'irgendwo in diesem PLZ-Gebiet', dann fände ich es gar nicht 
so abwegig als Referenzpunkt für den Entfernungsvergleich eben doch den 
Schwerpunkt (oder geografischen Mittelpunkt) des PLZ-Gebiets zu nehmen, 
selbst wenn dieser nicht in einem der Teilgebiete liegen sollte.

von Ein T. (ein_typ)


Lesenswert?

Martin K. schrieb:
> was meint ihr denn!?

Wie schon andere sehr richtig geschrieben haben, wird das mit 
Postleitzahlen nichts. Du wirst also vermutlich nicht darum herum 
kommen, Deine Adressen in Geokoordinaten umzuwandeln, das geht zu 
angegebenen Bedingungen hier [1] für lau und hier [2] für kleines Geld 
(250 Anfragen für 3,20 Euro). Die dadurch gewonnenen Daten kannst Du 
dann mit den handelsüblichen Methoden verarbeiten, beispielsweise mit 
PostGIS, Elastic- oder OpenSearch.


[1] https://operations.osmfoundation.org/policies/nominatim/
[2] https://www.latlong.net/convert-address-to-lat-long.html

von Ralf D. (doeblitz)


Lesenswert?

Michi S. schrieb:
> Ralf D. schrieb:
>> Spassig wird es bei PLZ-Gebieten,
>> die aus mehreren disjunkten Flächen bestehen
>> (sind nur wenige, aber sie existieren),
>> da will man wieklich mit den Grenzen und nicht
>> mit den Schwerpunkten arbeiten.
>
> Will man? Welche Grenzen nimmt man dann? Also v.a. die Grenze welchen
> Teilgebiets?

Die des nächsten. Man ermittelt den Abstand zwischen Referenzpunkt und 
dem nächstliegenden Punkt auf einer Begrenzungen des Multipolygons.

> Schließlich wird die reale Aufgabenstellung selten lauten: Ermittle die
> Entfernung zum nächstgelegenen Punkt eines bestimmten PLZ-Gebiets.

So ähnlich aber schon.

> Realistischer wäre da ja wohl: Wir haben Filialen in diesem, jenem und
> noch 27 anderen PLZ-Gebieten; welche ist näherungsweise die
> nächstgelegene?

Nö, typisch ist es genau andersherum. Für deine Filialen hast du präzise 
Geokoordinaten, der Sucher gibt seine PLZ ein und du suchst dann nach 
der Filiale, die den geringsten Abstand zu diesem Postleitgebiet hat.

> Wenn ich in diesem Fall bzgl. eines disjunkten Gebietes nicht mehr Info
> habe, als 'irgendwo in diesem PLZ-Gebiet', dann fände ich es gar nicht
> so abwegig als Referenzpunkt für den Entfernungsvergleich eben doch den
> Schwerpunkt (oder geografischen Mittelpunkt) des PLZ-Gebiets zu nehmen,
> selbst wenn dieser nicht in einem der Teilgebiete liegen sollte.

OK, je nach konkreter Aufgabenstellung kann es natürlich Situationen 
geben, in denen das besser passt. Aber diese Gebiete sehen teilweise 
wirklich etwas seltsam aus. Und es gibt auch einfache Polygone, die so 
komische geformt sind, dass der Schwerpunkt ausserhalb des eigentlichen 
Objekts liegt (z.B. bei sichelförmigen).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.