한 도로에서 좌표 얻기
도로 용 파일 .shp과 .dbf파일을 다운로드 하고 추출하여 데이터베이스에 저장합니다. 내 Google지도에 거리와 같은 이름의 포인트를 표시합니다.
다음과 같은 모습입니다.
나는 도로의 각 지점이 동일하지 않으므로 "osmId"모든 도로에서 모든 좌표를 얻는 방법을 발견했습니다 . 이것은 내가 osmId를 마커에 넣었을 때의 모습입니다 "osmId".
이 데이터를 추출 할 때 필드라는 필드 "name"가 있습니다. 이것은 도로 이름을 의미합니다. 그러나이 이름은 고유하지 않으며 같은 이름을 가진 여러 도로가 있습니다. 다음은 .shp 및 .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"
}
}
이 데이터가 데이터의 다른 부분과도 연결되어 있고 함께 고유 한 도로를 만들었다는 것을 알려주는 고유 한 ID 필드는 없습니다. 그렇다면 특정 도로에서 모든 포인트를 얻는 방법은 무엇입니까? 가능할까요? .shp및 .dbf파일 에서 데이터를 추출 합니다.
답변
OSM 데이터 (OSM 용어로 "방법") 세그먼트로 분할 될 때마다 임의의 속성 변경 (목축 야크 이름, 표면 폭 적법성, ...). "같은 길"이 의미하는 바를 결정하고, 기하학적으로 연결되는 비트를 조립하고, "같은 길"의 정의에 따라 결과를 잘라 내야합니다.
원본 OSM 데이터 (XML 또는 .osm.pbf 형식)로 작업하는 것이 더 쉬울 수 있습니다. 이는 셰이프 파일로의 변환에서 손실되는 내용과 결합 된 내용에 대한 명시적인 정보를 포함하기 때문입니다.
OSM XML 형식은 다음에 설명되어 있습니다. https://wiki.openstreetmap.org/wiki/OSM_XML. .osm.pbf 형식은 동일한 구조를 가지며 더 효율적으로 인코딩됩니다.