标签: dotspatial

读取c#中的shapefile坐标

我想使用shapefile的内容在纬度/经度上绘制"XAML Map Control"上的折线.

我有2种shapefile:

  • 一个是.dbf,.prj,qpj,.shx和明显的.shp文件.
  • 一个只有.shp文件

使用各种库(Net Topology Suite,现在是DotSpatial)读取这两种类型的文件,我获得了一个坐标列表(DotSpatial.Topology.Coordinate),如:

X   456874.625438354
Y   5145767.7929015327  
Run Code Online (Sandbox Code Playgroud)
  • 我如何将其转换为纬度/经度格式?
  • 目前的格式是什么?
  • .shp文件附带的文件是否有用?

c# wpf shapefile topography dotspatial

6
推荐指数
1
解决办法
6895
查看次数

NettopologySuite 和 Dotspatial WKTReader

所以我有一堆代表多多边形的 WKT。我专门使用 DotSpatial 来操作几何图形。具体来说,我试图从我的 WKT 中获取 DotSpatial.Topology.IGeometry。

不幸的是,DotSpatial 的家伙最近将很多东西移到了 NetTopologySuit 中,这就是他们的 WKTreader 所在的地方。

但是读取器传回一个 GeoAPI.Geometries.IGeometry,您不能将其强制转换为 DotSpatial.Topology.IGeometry,因为它们不是同一个类。不得不在三个不同的 API(DotSpatial、GeoAPI 和 NetTopologySuite)之间转换本质上相同的类,这让我感到有点恼火,这些 API 都具有类似的名称。

我想要做的就是从众所周知的文本中提取 DotSpatial.Topology.IGeometry。具体来说,它是我正在使用的 MultiPolygon,但无论如何。

我真的不想有一些很好的条件或选择语句来弄清楚如何处理 GeoAPI IGeometry 类以便我可以使用它。我已经有一个很大的转换器类,用于将各种几何类转换为 dotSpatial,我宁愿完全摆脱它。更少的代码是更好的代码。

任何人都可以协助将 GeoAPI.Geometries.IGeometry 转换为 DotSpatial.Geometries.IGeometry 吗?当我收到以下错误时,我不能直接投射它:无法将“NetTopologySuite.Geometries.MultiPolygon”类型的对象投射到“DotSpatial.Topology.IGeometry”类型。

有任何想法吗?

提前致谢,E

c# geoapi nettopologysuite dotspatial

6
推荐指数
1
解决办法
3398
查看次数

在Dotspatial中从FilePath加载栅格数据

我有这个简单的代码行 DotSpatial

var raster = Raster.OpenFile("X://Data//4mr_project.tif");
Run Code Online (Sandbox Code Playgroud)

为什么栅格只是获得空值?

我也有.aux,.ovr,.tfw在同一个目录中的文件.

编辑:

我发现下面这行很好用:

var featureSet = FeatureSet.Open("X:\\Test Data\\shap\\edited.shp")
Run Code Online (Sandbox Code Playgroud)

因为Dotspatial有能力.shp默认加载文件.但是加载栅格数据.tif格式,Dotspatial需要GDAL扩展.现在问题是如何GDALDotspatial使用中手动加载扩展C#.

c# raster dotspatial

4
推荐指数
1
解决办法
3897
查看次数

将坐标从EPSG 3857转换为4326 DotSpatial

我在我的数据库中有EPSG 3857格式的坐标列表.我需要在EPSG 4326中转换它们我试图使用DotSpatial,但我的代码总是重新调整一个无限的双数组.

public double[] ConvertCoodinates()
    {
        double[] xy = new double[2];
        xy[0] = 5085240.8300000000;
        xy[1] = 1530088.9600000000;
    //An array for the z coordinate
        double[] z = new double[1];
        z[0] = 0;
        ProjectionInfo pStart = KnownCoordinateSystems.Geographic.World.WGS1984;
        pStart.AuthorityCode = 3857;
        ProjectionInfo pEnd = KnownCoordinateSystems.Geographic.World.WGS1984;
        pEnd.AuthorityCode = 4326;
        Reproject.ReprojectPoints(xy, z, pStart, pEnd, 0, 1);
        return xy;
    }
Run Code Online (Sandbox Code Playgroud)

xy数组总是无穷大; 有人能帮我吗?

c# epsg dotspatial

3
推荐指数
2
解决办法
3265
查看次数

DotSpatial shapefile 的性能非常慢

我正在尝试从特定形状文件中读取所有特征数据。在本例中,我使用 DotSpatial 打开文件,并迭代这些功能。这个特定的 shapefile 文件大小仅为 9mb,dbf 文件大小为 14mb。大约有 75k 个特征需要循环。

请注意,这一切都是通过控制台应用程序以编程方式进行的,因此不涉及渲染或任何操作。

加载形状文件时,我重新投影,然后进行迭代。加载和重新投影非常快。然而,一旦代码到达我的 foreach 块,就需要将近 2 分钟来加载数据,并且在 VisualStudio 中调试时使用大约 2GB 内存。对于相当小的数据文件来说,这似乎非常非常过分。

我已经在 Visual Studio 之外从命令行运行了相同的代码,但是时间仍然大约是 2 分钟,并且该进程需要大约 1.3GB 的内存。

有什么办法可以加快速度吗?

下面是我的代码:

// Load the shape file and project to GDA94
Shapefile indexMapFile = Shapefile.OpenFile(shapeFilePath);
indexMapFile.Reproject(KnownCoordinateSystems.Geographic.Australia.GeocentricDatumofAustralia1994);

// Get's slow here and takes forever to get to the first item
foreach(IFeature feature in indexMapFile.Features)
{
    // Once inside the loop, it's blazingly quick.
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我使用VS立即窗口时,它超级超级快,完全没有延迟......

c# shapefile dotspatial

2
推荐指数
1
解决办法
3835
查看次数

标签 统计

c# ×5

dotspatial ×5

shapefile ×2

epsg ×1

geoapi ×1

nettopologysuite ×1

raster ×1

topography ×1

wpf ×1