问题标签 [spatial]

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.

0 投票
3 回答
2086 浏览

c# - C# 绘制 Oracle 空间几何图形

我需要创建一个简单的应用程序,它可以在 C# 中显示来自 Oracle Spatial 的几何图形。这些几何图形从 AutoCAD Map 3D 2010 导出到 Oracle Spatial。

我需要平移、缩放、管理这些对象的图层、事件(例如右键单击以弹出上下文菜单,每个对象可能不同)、创建/删除点(可能还有其他多边形):一种简单的 AutoCAD 界面。

我应该寻找 AutoCAD OEM 许可证吗?是否有可以处理此问题的绘图框架,还是我需要创建自己的?

0 投票
2 回答
465 浏览

python - 估计任意分布数据的边界

我有二维离散空间数据。我想对这些数据的空间边界进行近似,这样我就可以生成一个带有另一个数据集的图。

理想情况下,这将是 matplotlib 可以使用 plt.Polygon() 补丁绘制的一组有序 (x,y) 点。

我最初的尝试非常不优雅:我在数据上放置了一个精细的网格,并且在单元格中找到数据的地方,从该单元格创建了一个方形 matplotlib 补丁。因此,边界的分辨率取决于网格的采样频率。这是一个示例,其中灰色区域是包含数据的单元格,黑色区域是不存在数据的单元格。

第一次尝试 http://astro.dur.ac.uk/~dmurphy/data_limits.png

好的,问题解决了——为什么我还在这里?嗯....我想要一个更“优雅”的解决方案,或者至少一个更快的解决方案(即。我不想继续“真正的”工作,我想从中获得一些乐趣!)。我能想到的最好方法是光线追踪方法 - 例如:

  1. 从 xmin 到 xmax,在 y=ymin,检查数据边界是否在间隔 dx 中交叉
  2. y=ymin+dy,做 1
  3. 做 1-2,但现在在 y 中采样

另一种方法是定义一个中心,并在 r-theta 空间中采样 - 即 dtheta 增量中的径向辐条。

两者都会产生一组(x,y)点,但是我如何排序/链接相邻点以创建边界?

最近邻方法是不合适的,例如(借用地理),地峡(想想连接 N&S America 的巴拿马)然后可以关闭和隔离区域。这也可能无法很好地处理数据中看到的漏洞,我想将其表示为不同的 plt.Polygon。

解决方案可能来自解决面积最大化问题。对于定义数据限制的一组点,这些点中包含的最大连续区域是多少为了形成封闭区域,第 n 个点的相邻点是多少?在这个方案中将如何处理这些漏洞 - 现在这是否会导致拓扑错误?

抱歉,这大部分是我大声思考的。对于一些提示、建议或解决方案,我将不胜感激。我怀疑这是许多解决方案技术经常研究的问题,但我正在寻找一些简单的代码和快速运行的东西......我想每个人都是,真的!

~~~~~~~~~~~~~~~~~~~~~~~~~

好的,这是使用 Mark 的凸包概念的尝试 #2: 替代文本 http://astro.dur.ac.uk/~dmurphy/data_limitsv2.png

为此,我使用了 qhull 包中的 qconvex,让它返回极端顶点。对于那些感兴趣的人:

猫 [数据] | qconvex Fx > out

周边的采样似乎很低,虽然我没有玩太多设置,但我不相信我可以提高保真度。

0 投票
1 回答
952 浏览

filter - 空间域到频域

我知道傅立叶变换,但我不知道如何在这里应用它,我认为这太过分了。我给出了我对回复的想法,但我真的不知道我在寻找什么......

  1. 假设您形成了一个低通空间滤波器 h(x,y),它对像素 (x,y) 的所有八个直接邻居进行平均,但将其自身排除在外。

    一个。求等效频域滤波器 H(u,v):

我的答案是(a):

这是频域吗?

湾。证明你的结果又是一个低通滤波器。这与系数为正有关吗?

0 投票
3 回答
14448 浏览

sql-server-2008 - 选择具有大多边形的良好 SQL Server 2008 空间索引

我正在尝试为我正在处理的数据集选择一个体面的 SQL Server 2008 空间索引设置,这很有趣。

数据集是多边形,代表整个地球的轮廓。表中有 106,000 行,多边形存储在几何字段中。

我遇到的问题是许多多边形覆盖了地球的很大一部分。这似乎很难获得将消除主过滤器中的许多行的空间索引。例如,查看以下查询:

这是查询与表中仅两个多边形相交的区域。无论我选择哪种空间索引设置组合,Filter() 总是返回大约 60,000 行。

用 STIntersects() 替换 Filter() 当然只返回我想要的两个多边形,但当然需要更长的时间(Filter() 是 6 秒,STIntersects() 是 12 秒)。

谁能给我任何提示,说明是否存在可能改进 60,000 行的空间索引设置,或者我的数据集是否与 SQL Server 的空间索引不匹配?

更多信息:

按照建议,我在全球使用 4x4 网格将多边形拆分。我看不到使用 QGIS 的方法,所以我编写了自己的查询来做到这一点。首先我定义了 16 个边界框,第一个看起来像这样:

然后我使用每个边界框来选择和截断与该框相交的多边形:

我显然对 4x4 网格中的所有 16 个边界框都这样做了。最终结果是我有一个大约 107,000 行的新表(这证实了我实际上并没有很多巨大的多边形)。

我添加了一个空间索引,每个对象有 1024 个单元格,每个级别的单元格为低、低、低、低。

然而,非常奇怪的是,这个带有分割多边形的新表的性能仍然与旧表相同。执行上面列出的 .Filter仍会返回约 60,000 行。我真的完全不明白这一点,显然我不明白空间索引是如何工作的。

矛盾的是,虽然 .Filter() 仍然返回约 60,000 行,但它提高了性能。.Filter() 现在需要大约 2 秒而不是 6 秒,.STIntersects() 现在需要 6 秒而不是 12 秒。

此处要求是索引的 SQL 示例:

尽管请记住,我已经为每个对象的网格和单元格尝试了一系列不同的设置,每次都得到相同的结果。

以下是运行 sp_help_spatial_geometry_index 的结果,这是在我的拆分数据集上,其中没有单个多边形占据地球的 1/16 以上:

Base_Table_Rows 215138 Bounding_Box_xmin -90 Bounding_Box_ymin -180 Bounding_Box_xmax 90 Bounding_Box_ymax 180 Grid_Size_Level_1 64 Grid_Size_Level_2 64 Grid_Size_Level_3 64 Grid_Size_Level_4 64 CELLS_PER_OBJECT 16个Total_Primary_Index_Rows 378650个Total_Primary_Index_Pages 1129 Average_Number_Of_Index_Rows_Per_Base_Row 1 Total_Number_Of_ObjectCells_In_Level0_For_QuerySample 1 Total_Number_Of_ObjectCells_In_Level0_In_Index 60956 Total_Number_Of_ObjectCells_In_Level1_In_Index 361 Total_Number_Of_ObjectCells_In_Level2_In_Index 2935 Total_Number_Of_ObjectCells_In_Level3_In_Index 32420 Total_Number_Of_ObjectCells_In_Level4_In_Index 281978 Total_Number_Of_Interior_ObjectCells_In_Level2_In_Index 1 Total_Number_Of_Interior_ObjectCells_In_Level3_In_Index 49 Total_Number_Of_Interior_ObjectCells_In_Level4_In_Index4236 Total_Number_Of_Intersecting_ObjectCells_In_Level1_In_Index 29 Total_Number_Of_Intersecting_ObjectCells_In_Level2_In_Index 1294 Total_Number_Of_Intersecting_ObjectCells_In_Level3_In_Index 29680 Total_Number_Of_Intersecting_ObjectCells_In_Level4_In_Index 251517 Total_Number_Of_Border_ObjectCells_In_Level0_For_QuerySample 1 Total_Number_Of_Border_ObjectCells_In_Level0_In_Index 60956 Total_Number_Of_Border_ObjectCells_In_Level1_In_Index 332 Total_Number_Of_Border_ObjectCells_In_Level2_In_Index 1640 Total_Number_Of_Border_ObjectCells_In_Level3_In_Index 2691 Total_Number_Of_Border_ObjectCells_In_Level4_In_Index 26225 Interior_To_Total_Cells_Normalized_To_Leaf_Grid_Percentage 0.004852925 Intersecting_To_Total_Cells_Normalized_To_Leaf_Grid_Percentage 0.288147586 Border_To_Total_Cells_Normalized_To_Leaf_Grid_Percentage 99。70699949 Average_Cells_Per_Object_Normalized_To_Leaf_Grid 405.7282349 Average_Objects_PerLeaf_GridCell 0.002464704 Number_Of_SRIDs_Found 1 Width_Of_Cell_In_Level1 2.8125 Width_Of_Cell_In_Level2 0.043945313 Width_Of_Cell_In_Level3 0.000686646 Width_Of_Cell_In_Level4 1.07E-05 5.625 Height_Of_Cell_In_Level1 Height_Of_Cell_In_Level2 0.087890625 Height_Of_Cell_In_Level3 0.001373291 Height_Of_Cell_In_Level4 2.15E-05 Area_Of_Cell_In_Level1 1012.5 Area_Of_Cell_In_Level2 15.8203125 Area_Of_Cell_In_Level3 0.247192383 Area_Of_Cell_In_Level4 0.003862381 CellArea_To_BoundingBoxArea_Percentage_In_Level1 1.5625 CellArea_To_BoundingBoxArea_Percentage_In_Level2 0.024414063 CellArea_To_BoundingBoxArea_Percentage_In_Level3 0.00038147 CellArea_To_BoundingBoxArea_Percentage_In_Level4 5。96E-06 Number_Of_Rows_Selected_By_Primary_Filter 60956 Number_Of_Rows_Selected_By_Internal_Filter 0 Number_Of_Times_Secondary_Filter_Is_Called 60956 Number_Of_Rows_Output 2 Percentage_Of_Rows_NotSelected_By_Primary_Filter 71.66655821 Percentage_Of_Primary_Filter_Rows_Selected_By_Internal_Filter 0 Internal_Filter_Efficiency 0 Primary_Filter_Efficiency 0.003281055

“Base_Table_Rows 215138”对我来说没有多大意义,表中有 107,000 行,而不是 215,000

渲染后的数据集如下所示:( 来源:norman.cx替代文字

进一步的研究:

我继续对这些数据的初级过滤器性能不佳感到困惑。所以我做了一个测试,看看我的数据是如何分裂的。使用我原来的未拆分功能,我在表格中添加了一个“单元格”列。然后我运行了 16 个查询来计算该特征跨越的 4x4 网格中有多少个单元格。所以我为每个单元格运行了这样的查询:

如果我再查看表​​中的“单元格”列,我的整个数据集中只有 672 个特征与 4x4 网格中的超过 1 个单元格相交。那么,从字面上看,主过滤器如何返回 60,000 个特征来查看一个 200 英里宽的小矩形?

在这一点上,看起来我可以编写自己的索引方案,它会比 SQL Server 对这些功能的执行方式更好。

0 投票
1 回答
2107 浏览

sql-server - 使用sql server跨陆地两点之间的距离

我希望仅考虑土地质量来计算 SQL Server 2008 中两点之间的最短距离。

当乌鸦飞过时,我已经使用地理数据类型和 STDistance() 来计算点 x 到点 y 的距离,但是这有时会越过我试图避免的大海。

我还在我感兴趣的陆地边界周围创建了一个多边形。

我相信我需要结合这两种方法来确保 STDistance 始终保持在多边形内 - 除非有更简单的解决方案。

感谢您的任何建议

0 投票
1 回答
513 浏览

sql-server - SQL Server CE 是否支持空间数据类型的同步?

Sql Server 是否支持复制到 SQL Server CE?在文档中,SQL 服务器 CE 似乎不支持 st_geometry 类型。

0 投票
1 回答
213 浏览

oracle - Oracle Lite Database 10g 是否支持空间数据类型?

找不到任何有关支持数据类型的在线文档?

0 投票
1 回答
1577 浏览

oracle - 将 ShapeFiles 导入 Oracle XE

我希望将随军械测量边界线开源集提供的 Shapefile 之一导入 Oracle XE。

http://data.gov.uk/dataset/os-boundary-line

不幸的是,尽管谷歌搜索很多,但我完全不确定如何去做。

有人有任何指示或提示或指南链接吗?

干杯

詹姆士

0 投票
5 回答
21220 浏览

java - org.hibernate.MappingException:没有 JDBC 类型的方言映射:2002

当我org.hibernate.MappingException: No Dialect mapping for JDBC type: 2002尝试执行 JPA nativeQuery 来获取几何字段类型时,我得到了。

我正在使用 Oracle 和org.hibernatespatial.oracle.OracleSpatial10gDialect.

几何字段映射为:

这是我在 spring+struts2 上的休眠配置

如何解决?或者如何强制几何的类型使其工作?

0 投票
1 回答
844 浏览

solr - 无法在 Spatial Solr 查询中检索计算距离

我正在使用这个插件来允许Solr 中的空间查询。我已按照文档中包含的步骤进行操作,并且空间查询工作正常。

现在我想检索计算出的距离。我在 solrconfig.xml 文件中添加了这些行:

我已将“geodistance”组件添加到标准请求处理程序中:

然后,当我运行诸如“q={!spatial lat=41.641184 long=-0.894032 radius=2 calc=arc unit=km} cafeteria”之类的查询时,它可以工作,但只是第一次。当我再次运行相同的查询时,我收到此错误:

我不知道错误在哪里,因为第一次查询有效并且我在“geo_distance”字段中获得了计算距离。但是当重复查询时,我得到一个 NullPointerException。