2017-05-17 1 views
2

주소의 토지 이용을 반환하는 함수를 작성해야합니다. 지금까지 내 솔루션은 VB.Net을 기반으로하며 정보를 받기 위해 Nominatim을 사용하고 있습니다. 결과적으로 클래스와 타입의 두 속성을 얻었지만 토지 이용 정보가 필요합니다.OpenStreetMap Nominatim and LandUse

이 정보를 어떻게 얻을 수 있는지, 어떤 힌트가 있습니까? 이 사이트는 OSM의 토지 용도 목록입니다.

OSM의 shapefile도 있습니다.하지만 .Net에서 어떻게 사용해야하는지 잘 모르겠습니다. 내 시도는 Catfood.Shapefile을 사용하는 것이었지만 폴리곤에서 토지 이용 속성을 찾지 못했습니다.

 Dim Webbrowser1 As New WebBrowser 
     Dim ci As New System.Globalization.CultureInfo("en-US") 
     Dim latitude, longitude As Decimal 
     Dim doc As New System.Xml.XmlDocument 
     Dim myReq As Net.HttpWebRequest = DirectCast(Net.WebRequest.Create(url), Net.HttpWebRequest) 
     Dim webResponse As Net.HttpWebResponse = Nothing 
     Try 
      'Ergebnissatz von OpenStreetMaps laden 
      webResponse = TryCast(myReq.GetResponse(), Net.HttpWebResponse) 
     Catch 
      Exit Sub 
     End Try 

     If webResponse IsNot Nothing Then 
      If webResponse.StatusCode = Net.HttpStatusCode.OK Then 
       doc.Load(webResponse.GetResponseStream()) 
      End If 
     Else 
      Exit Sub 
     End If 

     Dim geometry As System.Xml.XmlNode = doc.SelectSingleNode("searchresults/place") 
     latitude = Convert.ToDecimal(geometry.Attributes("lat").Value, ci) 
     longitude = Convert.ToDecimal(geometry.Attributes("lon").Value, ci) 
     Debug.Print(geometry.Attributes("class").Value.ToString) 
     Debug.Print(geometry.Attributes("type").Value.ToString) 
+0

[mcve] – Mederic

+0

에서 언급 한 모든 코드를 공유 할 수 있습니다. 코드를 작성하기위한 해결책을 찾을 때 어떻게 코드를 공유 할 수 있습니까? – muffi

+0

당신이 [mcve]와 [ask]를 읽었다면 사람들을위한 코드가 아니라는 것을 알았을 것입니다. 그리고 당신도 말했다 그리고 당신은 지금까지 내 솔루션 그래서 당신은 이미 정보를 얻으려면 코드를 가지고있다 : – Mederic

답변

2

Nominatim는 지오 코더과 다른 정보를 반환하는 것은 아니다 :

이 내가 경도, 위도, 클래스를 얻을 수 및 유형 속성 방법이다. 추가 단계가 필요할 것입니다. Nominatim을 사용하여 귀하의 주소지를 얻으십시오. 그 후에는 Overpass API을 사용하여이 지리적 위치 주변의 모든 지형을 가져 오십시오.

way(around:500,50.7,7.1)[landuse]; 
(._;>;); 
out; 

result on overpass-turbo (육교 API를위한 웹 프론트 엔드를)보기 : 여기

는 예를 들어 육교의 API 쿼리입니다. 이 쿼리는 landuse 태그를 가지고 있으며 좌표 50.7,7.1에서 500m 이내에있는 모든 ways을 반환합니다.

+1

좋은 소리 - 아주 좋아. 이제 .NET 애플리케이션에서이 API를 통합하는 방법을 찾아 보겠습니다. 고맙습니다! – muffi

+0

당신이 내 대답을 좋아한다면 그것을 받아주십시오 :) – scai

+0

예제 사용을 검색 한 후 런타임에 쿼리 URL을 만드는 방법을 알고 있습니다. 지금까지 나는 그것을 좋아하고 물론 받아들입니다. :-) 한 가지 더 질문 : 나는 주변에서 테스트했습니다. 예를 들어 10으로 500을 테스트했는데, 너무 적었습니다. 응답에 토지 이용이 없었습니다. 점 (위도/경도)에 대한 토지 이용을 얻을 수있는 방법이 있습니까? 고맙습니다! – muffi