问题标签 [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.
ruby - 点属于哪个 Polygon
我试图找出某个点所在的区域(多边形)。
我正在尝试关注 Daniel Azuma 的 RubyConf2012 地理空间分析截屏视频。以下代码始终返回 nil:
这是我的区域课程:
积分类:
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
ruby-on-rails-4 - 将距离添加到特定的纬度/经度位置
Rails 4 + Postgres。地理空间新手。很高兴接受涉及 RGeo、Geokit、Geocoder 或任何其他有助于解决此问题的 gem 的解决方案。
模型包含两个字段latitude
和longitude
。
我有一个offset
包含以米为单位的距离的orientation
属性和一个包含 4 个基本方向(N、E、W、S)之一的属性。
例子:
offset: 525.5 orientation: W
将距离添加到 lat-long 位置的标准方法是什么offset
,作为距离相加的结果,给我一个新的 lat-long 对?
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
提供者的数据
ruby - 为什么我看到通过 SRID 4326 和 3785 计算的距离之间存在很大差异?
我正在阅读 Daniel Azuma 的 Geo-Rails 博客系列,我遇到了一个我试图复制的部分,但使用了不同的 SRID。具体来说,我引用了http://blog.daniel-azuma.com/archives/69和标题为使用位置数据的部分。
Daniel Azuma 有一个locations
带有latlon
属性的表:
相应的Location
类使用spherical_factory
with SRID
4326
:
创建两个示例点,并确定它们之间的距离:
我正在做类似的事情,但我得到了截然不同的结果(超过6
公里的差异)。
我正在使用SRID
3785
- 但我的印象是,如果我从 long/lat ( ) 到进行适当的转换,结果应该相当接近:4326
3785
我的Location
模型:
通过设置点parse_wkt
并计算距离:
通过设置点point
并计算距离:
我的结果是19.5
kilometers
Daniel Azuma 的结果是13.1
. 为什么差距这么大?我转换不正确吗?
数据库版本:PostgreSQL 9.3.1
和POSTGIS="2.1.0 r11822" GEOS="3.3.8-CAPI-1.7.8" PROJ="Rel. 4.8.0, 6 March 2012"
ruby-on-rails - 通过自定义方法确定 ActiveRecord 范围
因此,假设我有一个名为 Property 的类,并且我正在使用 PostGIS 适配器来跟踪物理属性(如房子、办公室等)之间的空间关系。我还使用 RGeo gem 来跟踪个人属性的位置。
因此,如果我打电话:
我在 Property 模型中也有一个自定义方法:
我想创建一个类似于“纬度小于 x”或“经度大于 x”的范围。
但是,如果我在控制台中输入
如果我尝试一个看起来像这样的范围:
然后我得到
所以基本上,“lat”没有列,尽管我可以在 Property 实例上调用 .lat 并获取我需要的信息。现在我只需要能够创建一种通过该返回值来确定范围的方法,即使没有列。
我想了解更多有关其工作原理的信息;ActiveRecord 查询是否在不知道模型上定义的方法的级别上运行,那些在数据库中不存在的方法?
任何和所有的帮助将不胜感激。
ruby - 在 RGeo 中通过偏移创建点
我正在编写一个相对简单的应用程序,其中我使用 RGeo 来计算地球上各点之间的距离。我正在使用RGeo::Geographic.spherical_factory
.
现在我希望能够通过向现有点添加偏移量来创建新点。例如,我希望能够找到现有点以北 500 米和以东 200 米的点的经度和纬度。
我该怎么做呢?
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 的未定义方法“点” '
有人知道吗?
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 上,我可以成功使用rgeo
with ruby 2.0.0-p395
,但是 geos 库是由homebrew安装的,因此在路径rgeo
中是预期的。
ruby 2.0 是否有影响编译 gem 的更改?
我在所有机器上使用 RVM
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 坐标。