问题标签 [dotspatial]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shapefile - 如何获取形状名称
使用 DotSpatial,如果我将 Shapefile 打开为IFeatureSet
,我可以在其中看到形状的集合,FeatureSet
并且这些形状具有属性的集合。但我看不到找到与形状关联的名称的明显方法?
例如,如果我有以下代码:
如果我通过在对象上放置断点来调试此代码,Shape
我可以看到一组属性。在我使用的示例中,每个形状都有 12 个属性。我可以看到这些属性之一是我认为是形状的名称(在这个例子中,我正在查看厄瓜多尔的省份),但我不知道如何可靠地配对这些属性中的哪一个是形状名称,在这种情况下是省的名称。
编辑
这是我可以看到的第一个形状的可用属性的示例:
快速浏览一下,我会说索引 4 处的属性是我需要的,但我如何以编程方式找到它?
进一步编辑
看起来,通过进一步探究数据,属性的标签可能是 DataTable 中的列名称IFeatureSet
:
虽然......如果我想导入这些形状,我会以编程方式选择其中哪些?是允许进行导入的人手动选择正确的唯一方法吗?
dotspatial - 使用 DotSpatial 从流中读取
是否可以使用 DotSpatial 从流(或流集)而不是特定文件中读取数据?我希望我可以将它指向包含的 ZIP 文件并且它会正常工作。
我查看了Shapefile.Open()
andShapefile.OpenFile()
方法,但似乎没有任何东西可以打开 ZIP 文件或多个流。
c# - DotSpatial shapefile 的性能非常慢
我正在尝试从特定 shapefile 中读取所有特征数据。在这种情况下,我使用 DotSpatial 打开文件,并且我正在迭代功能。这个特殊的 shapefile 只有 9mb 大小,而 dbf 文件是 14mb。大约有 75k 个特征需要循环。
请注意,这一切都是通过控制台应用程序以编程方式完成的,因此没有渲染或任何涉及的内容。
加载形状文件时,我重新投影,然后进行迭代。加载重新投影非常快。然而,一旦代码到达我的 foreach 块,加载数据需要将近 2 分钟的时间,并且在 VisualStudio 中调试时使用大约 2GB 的内存。对于相当小的数据文件来说,这似乎非常非常过分。
我已经从命令行在 Visual Studio 之外运行了相同的代码,但是时间仍然大约是 2 分钟,并且该进程需要大约 1.3GB 的内存。
有没有办法加快速度?
下面是我的代码:
有趣的是,当我使用 VS 即时窗口时,它超级超级快,完全没有延迟......
c# - 从 db 创建 shapefile 后,几何坐标变为相反的顺序
我有一个名为“hitbgt”的数据库表。有一列名称“the_geom”包含几何值。从 db 表中获取数据作为数据表并基于它创建一个 shapefile。代码如下......
一切正常。但是当我从 shapefile 检索几何数据时,多边形坐标值显示为逆时针,如数据库中一样。
示例:Db 几何:“POLYGON((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))” 形状几何:“MULTIPOLYGON(((35 10) ,10 20,15 40,45 45,35 10),(20 30,30 20,35 35,20 30)))"
任何人请帮助......
我对此感到困扰,因为它需要比较......
c# - 如何向 Dotspatial 中的自定义图层添加功能?
我需要将要素类型作为点、线或多边形添加到用户在组合框中选择图层名称的自定义图层。目前,每个 Feature 都只是插入到制作的最后一层
这是我的代码:
c# - 在多边形上创建特征(点)网格
我正在使用 C# 开发基于 GIS 的桌面应用程序。我在这个项目中使用点空间库。
现在我需要在多边形上创建一个特征网格。这个网格单元(矩形)应该是20*20 平方米。
我已经研究过它并且能够创建网格但面临关于单元格大小的问题。每当多边形大小改变时,单元格大小也会减小。我的代码。
现在,当我在小多边形上尝试此代码时,网格单元的大小也减小了。
我知道我的方法不正确,所以我搜索了它并获得了一些工具。喜欢
https://gis.stackexchange.com/questions/79681/creating-spatially-projected-polygon-grid-with-arcmap
但我想用 C# 创建它,但找不到任何算法或任何其他帮助材料。
请分享你的知识。谢谢
.net - 如何提高点空间地图的绘制性能
我正在编写一种导航应用程序,需要留下一条多边形的痕迹。创建多边形并将它们添加到地图不是问题,但是我必须用新的多边形更新地图。这样做的标准方法是:
但是执行以下操作也可以,但是它们具有相同的效果,因为它们是由 Refresh() 调用的较低级别的函数
我大约每秒添加一个新多边形,这意味着在 10 分钟内我有 600 个多边形。刷新过程清除整个缓冲区并通过每一层和每一层的每个特征重新创建它。当你有 1 层和 600 个特征时,这需要一秒钟多的时间,所以程序会卡住。我意识到现在我也已经找到了解决方案,只画了最后一个特征,但是:
- 我不知道如何
- 也许有一些其他的解决方案可以以某种方式刷新地图,这对性能来说并不是那么昂贵,理想情况下它不应该取决于需要显示的总大小,而只取决于需要绘制的新对象的大小.
欢迎任何可以帮助我在地图上留下多边形轨迹的建议,C#、VB.NET 或简单的古英语。
dotspatial - 使用内存中的 FeatureSet 和 Feature DotSpatial
我是 DotSpatial 的初学者,我遇到了一个问题。我尝试使用内存功能(仅将它们保留在地图中),直到用户点击保存按钮。基本思想是,如果 FeatureSet 不完全存在,用户导入一些 dxf 文件并根据图层名称创建特征集,并且为 dxf 中的每条折线创建将添加到特征集中的特征。
一切看起来都很好,地图用新的多边形更新,可以选择它们,从数据表中查看信息但是,当我尝试删除选定的特征(多边形)时,它会引发 IndexOutOfRange 异常。
我在那里做错了什么?
请帮忙!谢谢你,对我糟糕的英语感到抱歉。
PS 当我首先创建 featureSet 时,我将它保存在磁盘上,然后使用 Map.AddLayer() 方法加载到地图中。
c# - 在 DotSpatial 中定义多边形交叉 180 子午线
我是新手DotSpatial
,我尝试通过以下方式定义多边形交叉 180 子午线:
但是,当我检查输出形状文件时,多边形边缘彼此相交
如果我在 SQL Server 中绘制相同的多边形
我可以在 SQL Server 管理工具的“空间结果”中看到多边形正确显示。
谁能帮我解决这个问题DotSpatial
。
非常感谢!