问题标签 [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 投票
0 回答
343 浏览

ruby-on-rails - 更新 Rails 后 RGEo 转换错误

我将 Rails 版本更新为 4.2,然后在使用 Rgeo gem 时测试失败。表格上的属性类型似乎有问题。

can't cast RGeo::Geographic::SphericalPointImpl to point

在此链接http://nts.strzibny.name/fix-cant-cast-rgeogeographicsphericalpointimpl-to-point之后,我在数据库架构上将 t.point 更改为 t.geography,但没有发生任何新情况。

Postgres 版本: 9.5(也尝试使用 9.4.8) Postigs 版本: 2.2(也尝试使用 2.1.8)

有什么想法吗?

0 投票
1 回答
371 浏览

ruby - 点列表的 RGeo 凸包

RGeo 有可用的凸包方法,但在这方面根本没有文档。

给定一组点,我如何找到它们的凸包?

0 投票
1 回答
472 浏览

ruby-on-rails - 使用 PostGIS、RGeo、空间适配器按最近排序

我问这个问题是因为我在按最近排序 - PostGIS、GeoRuby、spatial_adapter中找到的答案无法提供解决方案。我正在尝试创建一个控制器方法,该方法可以将n 个最接近的记录返回到某个记录的 lonlat。它查询的记录来自同一个表。如果我完全在 SQL 中执行此操作,那么这个概念并不是一个很大的延伸。在链接的示例中很清楚,下面是我获得结果的特定情况:

我的问题是使用 ActiveRecord 进行这项工作。我正在使用一种受@dc10 响应启发的方法,但我无法通过 RGeo 方法或直接 SQL 创建工作查询。这是我到目前为止所拥有的:

此尝试的响应如下:

ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: 在“LIMIT”或附近出现语法错误 10:29:50 rails.1 LINE 1: ...lonlat, ST_PointFromText("#{unit.lonlat.as_text)}")限价 1 美元

有人可以让我在如何将这个工作查询放在一起的正确轨道上,以便我可以让它在 Rails 中工作吗?

0 投票
0 回答
64 浏览

ruby-on-rails-4 - Rgeo、activerecord-postgis-adapter 不会为 point 类型的属性触发 SQL 语句

所以我正在运行rgeoactiverecord-postgis-adapter正确设置了 Rails 4 应用程序的 db.yml 文件。

但是当我设置 ActiveRecord 模型的属性时,例如:

然后检查它触发的 SQL INSERT 语句,它不会包含geom在 INSERT INSERT INTO "places" ("name", "some_attr".....<- 没有插入的 geom attr 中。

如果有人以前看过这个并且知道问题可能是什么,请帮助谢谢!

0 投票
0 回答
292 浏览

r - 边界内的 R 个多边形

我正在尝试获取传单地图边界内的所有多边形。无需担心传单,问题更多的是关于 rgeos 或其他方法(或主要是关于正确的功能)。我尝试了各种方法,如果形状与边界相交,它们可以正常工作,但无法获得边界内的形状(不接触它)

该示例当然不可能重现,但通常 BB 非常小,远小于任何子区域 - 它仅用于测试目的。如果我制作比它更大的 BB,它当然会捕获一些子区域,其中一个肯定包含一个小的子区域。将其转换为任何可重现的示例 - 当我放大伦敦时,我无法获得“英格兰”,因为它不与任何东西相交。我尝试了 rgdal(gIntersection, gIntersects, gCovers, gCrosses, gOverlaps, gWithin, overGeoGeo, gContains 和其他几个) 和 raster (crop) 都没有成功。我的目标是获得在地图框中可见的子区域(空间数据框或数据框)的子集。知道我做错了什么吗?或者干脆怎么做?

为了使其能够重现:此处的 shapefile http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip

上面的 BB 是伦敦某处的一个小矩形 - 如何找到可能在 bb 内的 world.map 记录 - 穿过它或完全包含(这里只适用于英国,但我希望它能够工作,即使BB 是欧洲的大小)

编辑:这是包含多线而不是正确多边形的 shapefile 的问题,谢谢

0 投票
2 回答
1047 浏览

ruby-on-rails - 不支持对几何的多边形“包含”和其他操作

我对 postgis 和 rgeo 很陌生。我怀疑我可能以错误的方式处理事情,但我有点惊讶地发现一些操作,特别是包含和内部,在基于球形的对象上是不可能的。

我有一堆地理分布的对象,我想根据邮政编码之类的东西将它们组合在一起。对于这些分组中的每一个,我都有一个边界,我想检查一个对象是否在该边界内,并检查一个边界是否在另一个边界内。我正在使用 rails,这是用于设置我的集合模型的迁移

目前边界来自谷歌反向地理编码查找。NorthEast 和 SouthWest 边界框坐标在对象创建时传递到此方法

我已经编写了一些规范来检查一切是否按照我期望的方式运行。简单的基于距离的测试都按预期通过,但用于测试边界功能的测试存在问题。我遇到以下情况

当我尝试运行类似的查询时(我知道它有点傻)

或者如果我尝试直接使用 rgeo 对象

我明白了

挖掘我发现这个rgeo 问题和其他证据表明这些操作不支持基于球形工厂的对象

我是在想;

  1. 确定是这样吗
  2. 以迁移中描述的方式对对象的边界和位置进行建模对我来说似乎很有意义,但我猜我错了?
  3. 我应该如何使用 postgis、rgeo 和活动记录适配器找出一堆点是否在多边形内?
  4. 是否可以检查一个多边形是否在另一个多边形内?

编辑:

我跟进了倾斜的建议,并直接在我的数据库上运行了一些查询。首先,只是为了验证我的设置

我还进行了一些查询;

所以guess contains在地理上是行不通的。我四处挖掘,发现了 st_covers

这真的很令人惊讶,因为 latlng 是边界的中心点。我很困惑,肯定我在做一些很愚蠢的事情。任何帮助将不胜感激

0 投票
0 回答
337 浏览

ruby-on-rails - 如何将 google.maps.Data.MultiPolygon 保存到 rails 的 postgres 数据库中的几何数据类型列?

我是 Rails 框架的初学者,所以请原谅我的幼稚问题。我的前端有一个google.maps.Data.MultiPolygon对象,我想将它保存在我的数据库中。每次用户搜索时,该表searches都会创建一个新条目,其中包含不同的列,我在其中添加了另一列 datatype :geometry,当用户在特定搜索中绘制多边形时,该列将更新。所以我们需要更新数据库中的一个搜索条目,我正在使用put调用。我无法google.maps.Data.MultiPolygons在 put 调用上发送整个对象,因为$.params()无法序列化对象(这个问题与这里面临的问题相同)。

所以,我需要发送一组位置对象。是否有特定格式可以将这个位置对象数组直接转换为geometry更新函数上的对象?这是在 ruby​​ 中搜索更新时调用的更新函数:

search_params 是:

:drawn_polygons => RGeo::Geos::CAPIMultiPolygonImpl工作吗?如果是,我需要提供什么格式的:drawn_polygons对象?

或者

我需要将其:drawn_polygons作为坐标列表,并将其更改为RGeo::Geos::CAPIMultiPolygonImpl更新函数内部的一个?如果是这样,该怎么做?

0 投票
1 回答
580 浏览

ruby-on-rails - 如何为 Heroku 部署设置一个支持 postgis 的 Ruby on Rails 应用程序?

我有以下内容:

宝石:

初始化程序:config/initializers/rgeo.rb

数据库设置:config/database.yml

启用 heroku postgresql 的 postgis 扩展:

数据模型迁移:

构建包:

但我仍然在生产中遇到错误:

NoMethodError (nil:NilClass 的未定义方法 `property') ——— 日志 ———</p>

———来自heroku的错误日志———</p>

——— 来自本地主机的成功日志———-

那么在 Heroku 上设置一个支持 postgis 的 Rails 应用程序的正确步骤是什么?

顺便说一句,该应用程序在本地主机上运行顺利。无法在 Heroku 上对其进行整理。

0 投票
1 回答
706 浏览

ruby-on-rails - 在 Heroku 上安装 GEOS

我正在尝试将 Rails 应用程序(ruby​​ 2.3.0, rails 4.2.6)部署到使用RGeo gem 的 Heroku,但我没有安装 RGeo gem 所依赖的底层 GEOS 库(参见https: //github.com/rgeo/rgeo#dependencies)。

根据Heroku 自己的说明,这应该可以通过使用heroku-geo-buildpack来实现,但它不起作用。

将 BUILDPACK 添加到应用程序:

构建过程看起来不错:

测试依赖:

0 投票
1 回答
1148 浏览

ruby-on-rails - 使用 Rails / PostGIS / RGeo 存储 Google Maps 地理数据

使用 RGeo / Rails实施Daniel Azuma处理 Google Maps 地理数据的解决方案时遇到问题。

设置

位置表:

位置类:

初始化程序/rgeo.rb:

(从这里这里得出的解决方案)

问题

所以我们开始 - 我从包含来自 Google 地图的坐标的 geojson 形状创建一个新的 Location 对象:

此时,我们所有的地理属性都正常工作:

但是当我们保存并从数据库中重新读取时,出现了问题:

鉴于两个对象的投影几何形状相同,我不确定为什么后一个unproject操作会失败。