iRu*_*ens 6 c# wpf shapefile topography dotspatial
我想使用shapefile的内容在纬度/经度上绘制"XAML Map Control"上的折线.
我有2种shapefile:
使用各种库(Net Topology Suite,现在是DotSpatial)读取这两种类型的文件,我获得了一个坐标列表(DotSpatial.Topology.Coordinate),如:
X 456874.625438354
Y 5145767.7929015327
Run Code Online (Sandbox Code Playgroud)
您可以使用DotSpatial重新投影到lat long.如果您正在读取shapefile,并且.prj文件在那里以便投影已知,那么您需要做的就是:
Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp");
sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984);
Run Code Online (Sandbox Code Playgroud)
但是,如果.prj文件丢失,那么您需要首先定义投影,如:
Shapefile sf = Shapefile.OpenFile("C:\myshapefile.shp");
sf.Projection = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N;
sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984);
Run Code Online (Sandbox Code Playgroud)
但是,如果您没有shapefile并且只想将一组坐标从一个投影重新投影到另一个投影,则可以直接使用reproject实用程序:
// 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);
Run Code Online (Sandbox Code Playgroud)
最后一种方法使用这样的数组,以便投影模块可以在不直接引用数据模块的情况下工作.
| 归档时间: |
|
| 查看次数: |
6895 次 |
| 最近记录: |