问题标签 [rgeo]

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 投票
1 回答
943 浏览

ruby - 点属于哪个 Polygon

我试图找出某个点所在的区域(多边形)。

我正在尝试关注 Daniel Azuma 的 RubyConf2012 地理空间分析截屏视频。以下代码始终返回 nil:

这是我的区域课程:

积分类:

0 投票
1 回答
716 浏览

postgis - PostGIS 的 st_overlaps 方法仅返回与构成我正在搜索的多边形外部的 LinearRing 重叠的结果

我在 ruby​​/rails 上使用 PostGIS,并创建了一个简单的类似盒子的多边形,我希望在该多边形下搜索一个县的地块。st_overlaps 工具以前曾为此工作过,这次也工作过,有点。

所以我创建了多边形来搜索它下面的地块(事实证明是多个多边形)

运行活动记录调用后:

我得到 157 个结果。远远低于预期。我使用我的自定义脚本将它们导出为 kml 文件。我会尽快上传以供查看。

一旦加载到 Google 地球中,您将在该 kml 中看到的是一个平行四边形的引脚标记包裹,其区域(多边形)明显位于我创建的用于搜索的参数多边形的外环上。沿着这些看不见的线有这么多的地块,形状如此清晰,形状中间没有大头针,这一事实清楚地表明搜索结果只是在地块多面体与外边缘的重叠处(LinearRing ) 的搜索多边形。

根据我对文档的重新阅读st_overlaps,我对这里似乎存在什么问题感到困惑。

这是查看 kmz 导出的链接。(坐标在导出前转换为地理坐标)。您可以在浏览器中查看它。搜索多边形本身不包括在内,但很容易看出它的外环在哪里 https://docs.google.com/file/d/0B5inC0VAuhH1TXdTbWQ2RngxZk0/edit?usp=sharing

0 投票
2 回答
2996 浏览

ruby-on-rails-4 - 将距离添加到特定的纬度/经度位置

Rails 4 + Postgres。地理空间新手。很高兴接受涉及 RGeo、Geokit、Geocoder 或任何其他有助于解决此问题的 gem 的解决方案。

模型包含两个字段latitudelongitude

我有一个offset包含以米为单位的距离的orientation属性和一个包含 4 个基本方向(N、E、W、S)之一的属性。

例子: offset: 525.5 orientation: W

将距离添加到 lat-long 位置的标准方法是什么offset,作为距离相加的结果,给我一个新的 lat-long 对?

0 投票
1 回答
2763 浏览

ruby-on-rails - Rails Mongoid geo_near 按距离排序

我要做的是按距离对 mongoid geo_near(或 inside_circle)max_distance 结果进行排序,因为我不知道为什么,但默认情况下它不会这样做。

我的 Rails gem 文件中有 mongoid_geospatial、mongoid_spacial 和 rgeo。我知道 mongoid_spacial 有这个能力,但我不能使用它,它导致 gmaps4rails 出现问题。

我正在尝试 mongoid_geospatial(它使用 mongoid 库)但没有成功,除了这个https://stackoverflow.com/questions/18633636/mongodb-aggregate-geonear-maxdistance我找不到任何资源,但我不知道如何将 mongo 转换为 mongoid。

任何人都有在 mongoid 中对 geo_near 或 inside_circle 进行排序的经验?任何帮助将不胜感激。

我的控制器中的代码

我模型中的代码

-------------------------------------------------- -----------------------------------------

-------------------------------------------------- -----------------------------------------

编辑问题

地图

我已经尝试了几乎所有相关的东西,但都没有成功。阅读 mongo 和 mongoid geo_near 文档。它确实评论了存储位置 [lon, lat] 顺序。在保存提供者和中心位置时,我都尝试了 [lon, lat] 和 [lat, long]。也尝试了球形 geo_near 和 inside_circle。仍然没有成功。Geo_near 返回我的结果排序不正确,如上面的地图和下面的列表所示。应该有一些我丢失但找不到的东西。

红色部分是“geo_near_distance”输出结果,列表是根据这些排序的,但它们在地图上是错误的。绿色计算是我一直在使用的 jquery 代码,它返回正确的距离(虽然不能在控制器中使用)。

我应该缺少一些东西。有人能发现吗?

结果

这是我的最新代码:

提供者.rb

Providers_controller

绿色部分的 JQuery

提供者的数据

0 投票
1 回答
406 浏览

ruby - 为什么我看到通过 SRID 4326 和 3785 计算的距离之间存在很大差异?

我正在阅读 Daniel Azuma 的 Geo-Rails 博客系列,我遇到了一个我试图复制的部分,但使用了不同的 SRID。具体来说,我引用了http://blog.daniel-azuma.com/archives/69和标题为使用位置数据的部分。

Daniel Azuma 有一个locations带有latlon属性的表:

相应的Location类使用spherical_factorywith SRID 4326

创建两个示例点,并确定它们之间的距离:

我正在做类似的事情,但我得到了截然不同的结果(超过6公里的差异)。

我正在使用SRID 3785- 但我的印象是,如果我从 long/lat ( ) 到进行适当的转换,结果应该相当接近:43263785

我的Location模型:

通过设置点parse_wkt并计算距离:

通过设置点point并计算距离:

我的结果是19.5 kilometersDaniel Azuma 的结果是13.1. 为什么差距这么大?我转换不正确吗?

数据库版本:PostgreSQL 9.3.1POSTGIS="2.1.0 r11822" GEOS="3.3.8-CAPI-1.7.8" PROJ="Rel. 4.8.0, 6 March 2012"

0 投票
1 回答
1127 浏览

ruby-on-rails - 通过自定义方法确定 ActiveRecord 范围

因此,假设我有一个名为 Property 的类,并且我正在使用 PostGIS 适配器来跟踪物理属性(如房子、办公室等)之间的空间关系。我还使用 RGeo gem 来跟踪个人属性的位置。

因此,如果我打电话:

我在 Property 模型中也有一个自定义方法:

我想创建一个类似于“纬度小于 x”或“经度大于 x”的范围。

但是,如果我在控制台中输入

如果我尝试一个看起来像这样的范围:

然后我得到

所以基本上,“lat”没有列,尽管我可以在 Property 实例上调用 .lat 并获取我需要的信息。现在我只需要能够创建一种通过该返回值来确定范围的方法,即使没有列。

我想了解更多有关其工作原理的信息;ActiveRecord 查询是否在不知道模型上定义的方法的级别上运行,那些在数据库中不存在的方法?

任何和所有的帮助将不胜感激。

0 投票
1 回答
347 浏览

ruby - 在 RGeo 中通过偏移创建点

我正在编写一个相对简单的应用程序,其中我使用 RGeo 来计算地球上各点之间的距离。我正在使用RGeo::Geographic.spherical_factory.

现在我希望能够通过向现有点添加偏移量来创建新点。例如,我希望能够找到现有点以北 500 米和以东 200 米的点的经度和纬度。

我该怎么做呢?

0 投票
1 回答
376 浏览

ruby-on-rails - RGeo:运行空间迁移时出错

我正在使用 Rails 3.2 和 MySQL。我安装了宝石:

满足所有其他要求和依赖关系,或者至少我认为是这样。然而,当我运行此迁移时,按照建议的过程(此处)逐步创建包含空间数据的模型:

我得到错误:

#/.../.rvm/gems/ruby-1.9.3-p484/gems/rgeo-activerecord-0.4.6/lib/rgeo/active_record/common_adapter_elements.rb:105:in 'method_missing 的未定义方法“点” '

有人知道吗?

0 投票
0 回答
1031 浏览

ruby - 在非标准位置安装 Geos

我在nitrous.io上运行并尝试使用 ruby​​ 2.0.0-p353安装rgeo gem。

我没有sudo访问权限,所以我尝试从源代码编译和安装geos

下载并解压缩源文件后,我cd进入源文件夹并运行

这运行了一段时间。然后我跑

事情看起来不错,但如果我跳进终端,我会得到

回顾mkmf.log文件,我看到以下几行:

这篇博文:http: //blog.thefrontiergroup.com.au/page/2/提到创建符号链接来解决这个问题:

libgeos没有为我安装到 usr/lib,它在里面/home/action/local/lib,当我检查我看到libgeos.so的那个目录已经符号链接到libgeos-x.x.x.so.

如果我将 ruby​​ 版本切换到 1.9.3-p392 并运行 gem 安装行,一切都会按计划进行。

在我的 MacBook Pro 上,我可以成功使用rgeowith ruby 2.0.0-p395,但是 geos 库是由homebrew安装的,因此在路径rgeo中是预期的。

ruby 2.0 是否有影响编译 gem 的更改?

我在所有机器上使用 RVM

0 投票
0 回答
412 浏览

ruby-on-rails - 生产服务器上的 Rgeo geom nil

我有一个非常奇怪的错误,希望这里有人能提供帮助。我已经将一个形状文件导入到我的 rails postgis 数据库中。它包含以下列:

  • 搜索
  • 资源
  • 搜索2
  • 重复
  • 几何

geom 列包含一个 RGeo MultiPolygon 坐标。

奇怪的是我的本地 Rails 应用程序在读取所有记录 geom 字段时没有问题,但是我的生产服务器有一些记录在 geom 字段中为零。

这两个应用程序在 git 中具有完全相同的代码,并且正在查看完全相同的数据库。

这两个应用程序之间的唯一区别是我的本地应用程序在 OSX 上运行,而生产在 Ubuntu 12.04 上运行。

以下是一些有助于诊断问题的代码片段:

配置/数据库.yml

应用程序/模型/地名词典.rb

宝石文件

如果您能想到任何其他有用的东西,请告诉我,我会尽快提供。

更新 1

因此,我在两个系统上安装 postgresql 和 postgis 的方式存在差异。在 OSX(本地)上,我安装了 opengeo 软件套件,其中包含我需要的所有组件。在 Ubuntu(生产)上,我使用 apt-get 安装了 postgresql-9.3。

感谢这里的评论,我注意到我没有在生产服务器上安装一些东西,比如 geos 和 gdal。我都安装了,不幸的是仍然有同样的错误。

更新 2

所以我决定尝试让生产服务器与我的本地机器接近相同的环境,看看这是否能解决我的问题。我删除了 postgres/postgis/geos 的 apt 安装并安装了 Ubuntu opengeo 软件套件。这是我在本地机器上使用的。

不幸的是,这并没有解决问题。

然后我注意到我使用的是不同版本的 ruby​​。所以我更新了我的生产服务器以使用相同的版本(ruby 2.0.0p247)。

仍然没有解决错误。

我仍然对这个错误感到困惑。看来这一定与 rails、rgeo 或 activerecord-postgis-adapter gem 有关。

更新 3

因此,我注意到两个系统上的几何记录之间存在差异。我查看了数据库中的第一条记录,在 geom 字段中都有几何,但是平台之间的 Rgeo 类型不同。

本地服务器 (OSX)

RGeo::Geos::CAPIMultiPolygonImpl:0x3fc7af864fdc "MULTIPOLYGON ..."

生产服务器(Ubuntu 12.04)

RGeo::Geographic::SphericalMultiPolygonImpl:0x1b07a4c "MULTIPOLYGON ..."

似乎无法将 RGeo::Geographic 对象转换为 RGeo::Geos 坐标。