问题标签 [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.
c++ - 在 C++ 中操作空间数据的推荐框架有哪些?
在 C++ 中操作空间数据的推荐框架有哪些?
我正在寻找多边形对象、点对象以及一些操作,如联合、交集、距离和面积。我需要在 WGS84 (lon,lat) 中输入坐标并以平方公里为单位获取面积。
我更喜欢免费/开源框架,但愿意接受建议。
编辑:不幸的是,我需要一个非 GPL 解决方案。LGPL 没问题。
lucene - 在 Solr 中使用地理位置进行排名
为 Solr/Lucene 实现自定义排名算法的正确方法是什么?
我读到 Zvents 为与特定地理区域中的事件相对应的文档实施距离加权排名系统 ( http://www.lucidimagination.com/Community/Hear-from-the-Experts/Articles/Zvents )。
我想做类似的事情:我将不同城市的广告编入索引,并且我想提高给定特定位置的最近广告的相关性。
ruby-on-rails - 处理 rails 中的 lat/long 和 mysql 空间点
关于 mysql 空间数据类型有很多问题,但我的问题更具体到如何在 Rails MVC 架构中最好地处理它们。
我有一个输入表单,管理员用户可以在其中创建一个新的兴趣点,比如一家餐馆并输入一些信息。他们还可以以十进制格式输入人类可读的纬度和经度。
但是,对于距离计算等...我将位置数据作为空间点存储在数据库中。
因此,我的问题是如何在 Rails 的 MVC 架构中最好地处理这个问题?
以下是我的一些想法,但似乎没有什么是干净的:
调用 :after_filter 方法,该方法采用对象的新实例并执行原始 SQL 更新以处理“GeomFromText('POINT(lat long)' ))”优点。问题在于“纬度/经度”将是我创建表单中的文本字段,尽管这会破坏 rails 提供的干净的 form_for :object 架构,因为纬度/经度并不是真正的属性,它们只是为了让不是 mysql 空间的人工输入值。
也许在数据库中创建一个触发器以在更新该行的行插入之后运行?我不知道,而且这些触发器似乎无法访问纬度/经度,除非我存储了纬度/经度以及空间点,然后在数据库中创建了带有纬度/经度小数的行,然后在创建后运行触发器以更新空间。我想如果我将 lat/long 列添加到模型中,我也可以使用 after_filter 来做到这一点。
还有其他想法吗?我认为存储纬度/经度是多余的,因为我真的会使用空间点进行距离计算等……但如果我允许人工编辑,这可能是必要的。
sql-server-2008 - Sql Server 2008 地理 LineString 大小限制
今天我在 Sql Server 2008 中遇到了地理类型的可能大小限制Linestrings
。当我创建一个STGeomFromText()
包含 567 个包含 Long、Lat 和 Z 坐标的点的 Linestring 时,一切正常。
但是,如果我在线串上再添加一个点,我会得到:
ArgumentException 24200:指定的输入不代表有效的地理实例。
我找不到任何有关 sql server 的地理类型线串或类似内容的大小限制的文档。
这是地理限制还是STGeomFromtext()
功能限制?有没有人有一些链接到一些更详细的信息,或者是解决这个问题的唯一方法,将线串分成几个较小的线串,组合成一个多线串。
任何帮助表示赞赏;)
gis - 如何过滤空间数据
我有一个地图点数据库,我想将显示限制为一次最多显示约 50 个点。当用户放大时,可能会显示更多的点。
目前,我只是对结果集进行随机抽样。这不是很好,因为可能有空白区域,当放大时突然显示一个点。
我的下一个想法是我可以创建一个 10x5 的网格,然后迭代结果。如果网格中的某个位置是空的,我会显示一个点。这解决了之前的问题,但也不会让用户感觉到集中区域在哪里。此外,如果用户决定缩小到整个世界,这会很慢。
现在,我没有使用任何空间算法对数据进行排序。我的计划是先让它正常工作,然后快速完成。稍微阅读一下 RTress、kd-trees 和四叉树,我找不到任何可以帮助我选择样本的“智能”子集的东西。似乎应该有某种广度优先搜索可以很容易地解决这个问题。
data-structures - 存储大型 2D 游戏世界
我一直在尝试如何存储 2D 游戏世界的不同想法。我对在管理可见的集合(比如说 100,000 个方块)的同时存储大量对象的技术很感兴趣。显然,这些技术可能会根据游戏渲染该空间的方式而有所不同。
让我们假设我们描述的是一个滚动的 2d 游戏世界,而不是基于屏幕的游戏,因为你可以很容易地从这样的设置中进行基于屏幕的渲染,而反之则有点混乱。
在这里寻找与语言无关的解决方案,以便对其他人更有帮助。
编辑:我认为这里的一个好的答案是对考虑这一点时要考虑的想法进行一般性回顾,正如一些响应者所尝试的那样,但也开始解释不同的解决方案将如何应用于这些场景。这是一个有点复杂的问题,所以我希望有一个很好的答案来反映这一点。
oracle - 在视图中使用 Oracle SDO_POINT 时丢失小数
我们有一个表格,其中包含坐标等。我们曾经将它们存储在两个数字字段(x 和 y)中,但现在我们已将其替换为 SDO_GEOMETRY 字段。为了向后兼容,我们创建了一个视图(与以前的表同名),我们在其中执行以下操作:
创建或替换视图 meas_pnt 为 select ..., m.position.SDO_POINT.X x_coordinate, m.position.SDO_POINT.Y y_coordinate from meas_pnt_tab m;
这适用于读取和写入,但是在将小数写入视图时,小数会丢失。我不知道为什么。有人可以帮忙吗?下图说明了问题:
更新 meas_pnt_tab m 设置 m.position.SDO_POINT.x = 2.3 where meas_key=1; 从 meas_pnt_tab m 中选择 m.position.SDO_POINT.X,其中 meas_key=1;-> x 是 2.3。好的!
更新 meas_pnt 设置 x_coordinate = 2.3 where meas_key=1; 从 meas_pnt_tab m 中选择 m.position.SDO_POINT.X,其中 meas_key=1;-> x 是 2。
map - 带方向的自定义地图
我想制作一个地图程序,为校园(宿舍、足球场等)和建筑物内(办公室、自助餐厅等)提供方向。是否存在任何有助于促进这一点的东西?
另一种选择似乎是我必须创建自己的校园周围点和路径的地图,并进行路径查找。
编辑:为了澄清,我想知道如何将空间意识添加到寻路程序中,以便为路径生成步行方向。示例:对于一个充满办公室的走廊,它有两个节点允许一条路径进入走廊,你怎么知道某个办公室是在一个节点的左边,另一个节点的右边?
artificial-intelligence - 2D 游戏:为另一个实体找到 x 个最接近的实体的快速(est)方法 - 大量实体,高度动态
我正在开发具有大量动态实体的 2D 游戏。为了好玩,我们称他们为士兵,假设他们有 50000 人(我只是随机想到的,可能或多或少 :))。
所有这些士兵都在按照规则移动每一帧——想想机器人/植绒/转向行为。对于每个士兵,要更新它的运动,我需要最接近我正在处理的那个士兵的 X 个士兵。
存储它们以促进这样的计算而没有太多开销的最佳空间层次结构是什么?(所有实体每帧都会更新/移动,因此它必须很好地处理动态实体)