2014-10-21 8 views
5

셰이프 파일의 내용을 사용하여 위도/경도로 "XAML 맵 컨트롤"에 폴리 라인을 그려야합니다. .DBF, .PRJ, qpj, .SHX 분명히 .shp 인 파일을C에서 모양 파일 좌표 읽기 #

  • 하나 :

    나는 Shape 파일의 2 개 종류가있다. 단지와

내가 좋아하는 좌표 (DotSpatial.Topology.Coordinate)의 목록을 얻을 다양한 라이브러리와 파일의 두 종류로 읽기 (인터넷 토폴로지 스위트, 지금 DotSpatial) 파일 .SHP :

X 456874.625438354 
Y 5145767.7929015327 
  • 어떻게 위도/경도 형식으로 변환 할 수 있습니까?
  • 현재 형식은 무엇입니까?
  • .shp 파일과 함께 제공되는 파일이 유용합니까?
+1

당신은 이미 위도/경도로 되돌아 가야합니다. 올바른 SRID와 투영법을 지정했는지 확인하십시오. – Habib

+0

도움에 감사드립니다. shapefile (Shapefile.Projection) 투영은 WGS_1984_UTM_Zone_32N입니다. 이름에서 좌표가 UTM 형식으로 생각됩니다. 변환 예가 있습니까? – iRubens

+0

어떤 API를 사용하고 드래그 앤 드롭 할 수 있는지 알려주세요. –

답변

4

DotSpatial을 사용하여 long long으로 재 투영 할 수 있습니다. 당신이 Shape 파일에 읽고, 투사가 알려져 있도록 .PRJ 파일이 있다면, 당신이 할 필요가있다 : 그러나 .PRJ 파일이없는

 Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp"); 
     sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984); 

, 경우에, 당신 것 처음처럼 투영 정의해야

 Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp"); 
     sf.Projection = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N; 
     sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984); 

을하지만 모양 파일이없는 당신은 또 다른 하나의 돌출부에서 일련의 좌표를 재 투영 할 예를 들어, 당신은 직접 재 투영 유틸리티를 사용할 수 있습니다 :

 // interleaved x and y values, so like x1, y1, x2, y2 etc. 
     double[] xy = new double[]{456874.625438354,5145767.7929015327}; 
     // z values if any. Typically this is just 0. 
     double[] z = new double[]{0}; 
     // Source projection information. 
     ProjectionInfo source = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N; 
     // Destination projection information. 
     ProjectionInfo dest = DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984; 
     // Call the projection utility. 
     DotSpatial.Projections.Reproject.ReprojectPoints(xy, z, source, dest, 0, 1); 

이 마지막 방법은 이와 같은 배열을 사용하여 투영 모듈이 데이터 모듈을 직접 참조하지 않고도 작동 할 수 있도록합니다.