问题标签 [geospatial]
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.
algorithm - 如何使用纬度/经度数据进行有效的范围搜索+计数?
我正在使用由纬度/经度对表示的大量点(这些点不一定是唯一的,该集合中可能有几个点位于同一位置)。这些点存储在数据库中。
我需要做的是找出一种有效执行搜索的方法,以获取位于任意点的给定半径(例如 25 英里)内的点数。计数不需要 100% 准确 - 更重要的是,它只需要快速,并且合理地接近正确计数。使用 SQL 执行此操作是可能的,方法是在 WHERE 子句中使用带有一些三角函数的查询来过滤点到参考点的距离。不幸的是,这个查询非常非常昂贵,而且缓存不太可能提供太多帮助,因为位置会非常分散。
我最终希望构建某种能够有效处理这种操作的内存结构 - 以牺牲数据的一些准确性和活跃性(可能每天只重建一次)来换取速度. 我一直在对 kd-trees 进行一些研究,但我还不清楚这可以如何应用于纬度/经度数据(与二维平面中的 x,y 数据相反)。
如果有人有我应该研究的任何想法或解决方案,我将非常感激 - 所以提前致谢。
sql-server - 我将如何概括多个相邻的多边形?
当您有一个带有几何类型字段(或地理)的表时,您可以调用该Reduce()
函数以减少形状的顶点数。效果很好。但是,当多个多边形相邻时(它们共享部分边界),缩小的多边形不一定这样做。
例子
SQL批处理:
这将返回两组多边形。首先是未约集:
然后是缩减集:
这些形状要简单得多,并且它们的粗略形状确实正确,但我想要的是仍然共享边框部分。所以他们必须在某种程度上一起减少。
我认为您必须首先将它们分解为多段线(从边缘到边缘),然后减少线,然后再次将它们重新组合成多边形。我不知道如何在 T-SQL 中做到这一点。
有任何想法吗?
编辑: 我接受了 alphadaogg 的回答。当前的两个答案对我来说并不完全令人信服,但 alphadogg 肯定付出了最大的努力,我非常感谢任何想法的分享。所以赏金给了他。
如果我找到令人满意的方法,我稍后会跟进自我回答。
跟进:我与 SqlServer Geo 团队的项目经理 Isaac Kunen 发送了电子邮件。他的有益回应如下:
你的问题一点也不罕见,但它不是我们直接支持的:这是一个需要了解你的图形拓扑的操作,我们没有内置这样的东西。本质上,你不想要为每个邻域存储单独的多边形。相反,您希望存储代表边界部分的曲线,并将这些边界重新用于多个多边形。概化时,您会概化共享边界,并且所有从属多边形都会受到影响。
你可以自己构建它——正如你引用的线程中的海报所暗示的那样——但这可能是真正的努力。
我不知道您正在使用的第三方软件,但这是另一种选择。如果您不想要一个成熟的 GIS,您可以使用像 Safe Software ( http://www.safe.com ) 中的 FME 这样的软件包。FME 不做通用拓扑,但我相信它有足够的功能来做你正在寻找的东西。请参阅: http: //www.safe.com/products/desktop/under-the-hood.php#3b。
我希望这有帮助。
干杯,
-艾萨克
algorithm - 高度图生成算法?
我在互联网上四处寻找,找不到解决这个特定问题的完美算法:
我们的客户有一组点和重量数据以及每个点,如下图所示:
加权点 http://chakrit.net/files/stackoverflow/so_heightmap_points.png
其中,我们有一个 GIS 程序,可以从这些点及其权重值生成“高度图”或一种地形数据,但由于我们有近一千个数据点并且这些数据会随着时间而变化,我们希望创建我们自己的工具来自动生成这些高度图。
到目前为止,我已经尝试计算每个像素从其到最近数据点的距离的Sqrt((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
权重,并将权重和距离因子应用于数据点的颜色以生成该特定像素的结果渐变颜色:
高度图结果 http://chakrit.net/files/stackoverflow/so_heightmap_result.png
您可以看到某些数据点的配置仍然存在问题,并且当有很多数据点时,该算法有时会产生一个相当多边形的图像。理想的结果应该看起来更像一个省略号,而不是一个多边形。
这是来自维基百科关于梯度上升的文章的一个示例图像,它展示了我想要的结果:
山 http://chakrit.net/files/stackoverflow/so_gradient_descent.png
梯度上升算法不是我感兴趣的。我感兴趣的东西;是首先计算该图片中的原始函数的算法,提供具有权重的数据点。
我没有上过任何拓扑数学课,但我可以做一些微积分。我想我可能遗漏了一些东西,并且对我应该在那个谷歌搜索框中输入什么感到迷茫。
我需要一些指示。
谢谢!
gis - 寻找好的地理空间图书馆
什么是地理空间功能的好库?我的意思是像
- 地球上两点之间的距离
- 从特定点到给定半径的圆的坐标
- 等等
如果有不同数据库表示地理位置的各种方式的接口,则会有好处。
我是一个地理新手(如果这个问题不明显),所以欢迎指向其他地理定位/地理空间资源的指针。
首选 C++ 和 Python,但欢迎所有指针。
oracle - 在 Oracle Spatial (SDO) 中,有没有办法获取多边形表面所包含的多边形的质心点?
我需要在多边形本身内部的 Oracle Spatial 中找到多边形的质心。我不能使用 sdo_geom.sdo_centroid 方法,因为如果形状类似于马蹄形,这将返回形状之外的一个点。
我找到了 sdo_geom.sdo_pointonsurface 方法,但它返回的点恰好位于多边形的边缘。虽然这在数学上可行,但在我们的环境中并不安全,因为所有多边形都与其他多边形共享一个边界,有时数据中会有轻微的重叠。此重叠不能包括计算点。
是否有另一种方法可以在不编写自定义代码的情况下找到这一点?我不反对为此编写自定义代码,但如果它已经存在,我想使用一些预先构建的东西。
谢谢!
c# - 在 C# 中生成地理参考图像
我想使用 Open Layers 创建一些热图样式的图块以覆盖我们的基本图。基本上,我想将一些边界框划分为一个网格,并根据样本中有多少点落在该网格正方形内,使用不同的颜色显示网格的每个正方形。
涉及的技术有 C#、OpenLayers、SQL Server 2008 和 GeoServer。
我的问题基本上是一种通用方法,我不确定将凿子的尖端放在哪里。
我的最终目标是能够采用任意边界框,计算适合该边界框的 x 英里 x 英里网格,迭代单个点的集合并将它们分配给一个网格正方形或另一个网格可以计算每个网格正方形的点密度,然后根据密度为网格着色,然后使用 Open Layers 将其覆盖在 CloudMade 底图上。
任何帮助都将不胜感激,无论是整个事情还是其中的任何一部分。
delphi - 如何计算两个 WGS84 坐标之间的方位角(向北的角度)
我有两个 WGS84 坐标,以度为单位的纬度和经度。这些点相当靠近,例如仅相隔一米。
有没有一种简单的方法来计算这些点之间的线的方位角,即向北的角度?
天真的方法是假设笛卡尔坐标系(因为这些点非常靠近)并使用
sin(a) = abs(L2-L1) / sqrt(sqr(L2-L1) + sqr(B2-B1))
a = 方位角 L1, L2 = 经度 B1, B2 = 纬度
随着坐标远离赤道,误差会更大,因为两个经度之间的距离变得越来越小于两个纬度之间的距离(保持不变)。
我发现了一些我真的不想实现的非常复杂的公式,因为它们对于那些靠得很近的点来说似乎有点矫枉过正,我不需要非常高的精度(两位小数就足够了,一个可能也可以,因为那里无论如何都会降低精度的其他因素,例如 GPS 返回的因素)。
也许我可以根据纬度确定一个近似的纵向校正因子并使用这样的东西:
sin(a) = abs(L2*f-L1*f) / sqrt(sqr(L2*f-L1*f) + sqr(B2-B1))
其中 f 是校正因子
有什么提示吗?
(我不想为此使用任何库,尤其是不需要运行时许可证的库。任何 MPLed Delphi Source 都会很棒。)
sql - 所有 SQL 地理空间实现都是特定于数据库的吗?
我的团队正在研究不同数据库平台提供的地理空间功能。
是否所有实现都是数据库特定的,或者是否有 ANSI SQL 标准或类似类型的标准,正在提供或将在未来提供?
我问,因为我希望实现的代码尽可能与数据库无关(我们的项目是按照 ANSI SQL 标准编写的)。
将来是否有任何已知的将此功能标准化的计划?
postgresql - PostgreSQL 是否实现地理空间关系查询?
我的公司正在研究不同的数据库提供商,以及他们如何实施地理空间查询以获取与 Lat/Long 的距离以获取许多记录。
我们将研究 PostgreSQL 作为一个潜在的数据库平台。
- 我听说 PostGRE 实现了地理空间查询。它是否正确?
- 是否有一个很好的参考可以提供有关实施的信息?
sql-server-2005 - MS Sql Server 2005 有空间数据功能吗?
我想知道是否有任何优化可以在不移动到 SQL SERVER 2008 的情况下实现更快的空间数据选择。对于 SQL Server 2005,本机或通过插件,以下任何功能?
- 空间字段类型
- 空间索引
- 用于球体(地球)表面距离计算的 Arcsin 数学函数