读取c#中的shapefile坐标
发布时间:2020-12-15 08:45:50 所属栏目:百科 来源:网络整理
导读:我想使用shapefile的内容在纬度/经度上绘制“XAML Map Control”上的折线. 我有2种shapefile: 一个使用.dbf,.prj,qpj,.shx和明显的.shp文件. 一个只有.shp文件 使用各种库(Net Topology Suite,现在是DotSpatial)读取这两种类型的文件,我获得了一个坐标列表(
我想使用shapefile的内容在纬度/经度上绘制“XAML Map Control”上的折线.
我有2种shapefile: >一个使用.dbf,.prj,qpj,.shx和明显的.shp文件. 使用各种库(Net Topology Suite,现在是DotSpatial)读取这两种类型的文件,我获得了一个坐标列表(DotSpatial.Topology.Coordinate),如: X 456874.625438354 Y 5145767.7929015327 >我如何将其转换为纬度/经度格式? 解决方法
您可以使用DotSpatial重新投影到lat long.如果您正在读取shapefile,并且.prj文件在那里以便投影已知,那么您需要做的就是:
Shapefile sf = Shapefile.OpenFile("C:myshapefile.shp"); sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984); 但是,如果.prj文件丢失,那么您需要首先定义投影,如: Shapefile sf = Shapefile.OpenFile("C:myshapefile.shp"); sf.Projection = DotSpatial.Projections.KnownCoordinateSystems.Projected.UtmWgs1984.WGS1984UTMZone32N; sf.Reproject(DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984); 但是,如果您没有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,1); 最后一种方法使用这样的数组,以便投影模块可以在不直接引用数据模块的情况下工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |