Ottenere le coordinate attraverso una strada
Scarico .shpe .dbffile per strade, lo estraggo e lo salvo su database. Visualizzo i punti con lo stesso nome della strada sulla mia mappa Google.
Ecco come appare:
Ho scoperto che non tutti i punti dall'altra parte della strada hanno lo stesso "osmId", quindi come ottenere tutte le coordinate su tutta la strada. Ecco come appare quando metto osmId sui marcatori, ce ne sono diversi (la prima riga è "osmId"):
Quando estraggo questi dati ho chiamato il campo "name"- significa nome della strada. Ma questo nome non è univoco, ci sono diverse strade con lo stesso nome. Questo è un esempio di dati estratti da file .shp e .dbf:
{
"geometry" : {
"coordinates" : [
[
20.0343585,
50.0806794
],
[
20.0345215,
50.0807741
],
[
20.0346159,
50.0808264
]
],
"type" : "LineString"
},
"type" : "Feature",
"properties" : {
"osm_id" : "2954554",
"code" : "5122",
"fclass" : "residential",
"name" : "Ignacego Mościckiego",
"ref" : null,
"oneway" : "B",
"maxspeed" : 40,
"layer" : 0,
"bridge" : "F",
"tunnel" : "F"
}
}
Non esiste un campo id univoco che possa dirmi che questi dati sono collegati anche ad altre parti di dati e insieme hanno creato una strada unica. Quindi come ottenere tutti i punti attraverso la strada specifica? È possibile? Estraggo dati da .shpe .dbffile.
Risposte
I dati OSM sono suddivisi in segmenti ("modi", nel gergo OSM) ogni volta che una qualsiasi proprietà cambia (nome, superficie, larghezza, legalità degli yak da pastore, ...). Devi decidere cosa intendi per "la stessa strada", assemblare i pezzi che si uniscono geometricamente e tagliare il risultato secondo la tua definizione di "stessa strada".
Potrebbe essere più facile lavorare con i dati OSM originali (in formato XML o .osm.pbf), poiché contiene informazioni esplicite su ciò che è unito a cosa, che si perde nella conversione in uno shapefile.
Il formato XML OSM è descritto in https://wiki.openstreetmap.org/wiki/OSM_XML. Il formato .osm.pbf ha la stessa struttura, è solo codificato in modo più efficiente.