问题标签 [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 回答
1951 浏览

ruby-on-rails - RGeo:将多边形投影到具有不同 SRID 的谷歌地图上

我有一个代表学区的多边形,它是从NYC Open Data导入的。我相信坐标在epsg 投影 2263 - nad83 / 纽约长岛

我无法将坐标转换为谷歌地图可用的格式。

这是我从原始 shapefile 导入多边形的代码:

在我的模型中:

在我的控制器中:

我知道我缺少关于如何转换坐标的一些东西,但我不确定从这里去哪里,即使在阅读了 Daniel Azuma 的优秀指南之后。有人知道怎么做吗?

0 投票
1 回答
1075 浏览

ruby-on-rails - 当由 let 创建时,Rspec 模型方法返回 nil

好的,所以这看起来像是一个新手问,但是当我创建一个我的模型实例时let,由于某种原因,它上面的所有 getter 方法都返回 nil。这是我的例子:

模型:

规格:

(#longlat 属性被注释掉,因为.centroid在 RGeo 中对球形定义的多边形调用该方法是不行的。在我的待办事项列表中获得正确的投影与这个问题无关)并且规范失败像这样:

FWIW,这是 Rspec 日志:

作为参考,我可以Parcel.create在 Rails 控制台中成功运行,并获取实例变量以返回非零值

我正在运行 rails 3.2,使用带有 postgis 2 的 postgres 9.3,并且严重依赖于 activerecord-postgis-adaptor、RGeo、activerecord-postgres-hstore 等。

有什么想法吗?

0 投票
1 回答
311 浏览

ruby-on-rails - 在 Rails 中使用 form_for 插入 lat/long 坐标

我正在使用 Rails 4.4.1、Ruby 2.1.2、RGeo 0.3.20 和 activerecord-mysql2spatial-adapter 0.4.3

我的问题可能很简单,因为我是 Ruby 和 Rails 的新手,但到目前为止我在网络上找不到任何有用的东西。

我想创建一个表单来在我的数据库中插入地理空间坐标,但我不知道如何访问 :latlon 字段 x 和 y。这是我的暂定代码:

访问 localhost:3000/cities/new url 时出现的错误是

任何人都知道如何创建一个表单来在我的数据库中插入 latlon.x 和 latlon.y 数据?

0 投票
2 回答
904 浏览

r - 自然邻域插值。计算多边形相交面积时出错

我正在尝试在 R 中编写算法。它是否已经存在于任何包中?!?

这就是我所做的(在 SO 和各种博客文章的帮助下):

所以基本上我画了一次加一个点的voronoi tassellation,并尝试计算多边形之间的交点,问题是:max(int) 给0,好像没有插值,为什么会这样?面积计算gIntersection正确吗?它们的价值非常小,我不知道度量单位。

编辑:新位置之前这里的流苏和之后的流苏这里。我不确定流苏返回的区域,这就是我认为错误所在的地方,但我不确定。

0 投票
1 回答
211 浏览

ruby-on-rails - 使用 PostGIS RGeo Lat/Lng 点将纬度保存为 -90

我正在使用地理空间坐标并在 rails 控制台中测试我的编码

看起来它正在将我的经度更改为 -90.0 而不是应该是 -93.291557312011719

任何帮助将不胜感激..尝试过

“点(#{lng} #{lat})”

“点(#{lng.to_f} #{lat.to_f})”

服务器信息

IRB 控制台

但如果我不想保存到数据库,我会得到这个

这是我的位置表

0 投票
0 回答
169 浏览

ruby-on-rails - 在 Heroku 上使用 activerecord-postgis-adapter 返回 nil 的 POINT

我正在使用 activerecord-postgis-adapter 将(纬度,经度)值保存为POINTs。使用以下语法保存点:POINT( lat lng). 我的模型 ,Foo有一个属性spot,POINT保存在其中。当部署到 Heroku 时,spot在创建新的Foo. 但是,它在以下情况下按预期工作:

  • 在本地使用开发数据库(在生产和开发环境中)
  • 在本地连接到生产数据库
  • 在 Heroku 内的 rails 控制台中

activerecord-postgis-adapter 在本地和 Heroku (2.2.0) 上的版本相同。有没有人知道 Heroku 生产环境(不在控制台中出现)中可能导致这种情况的不同之处?

0 投票
2 回答
11694 浏览

ruby - ActiveRecord 子查询内连接

我正在尝试将“原始”PostGIS SQL 查询转换为 Rails ActiveRecord 查询。我的目标是将两个连续的 ActiveRecord 查询(每个约 1 毫秒)转换为单个 ActiveRecord 查询(约 1 毫秒)。使用下面的 SQL,ActiveRecord::Base.connection.execute我能够验证时间的减少。

因此,我的直接请求是帮助我将此查询转换为 ActiveRecord 查询(以及执行它的最佳方式)。

请注意,该值<postalcode>是此查询中唯一的可变数据。显然,这里有两个模型UserZipCacheUser与 没有直接关系ZipCache

当前的两步 ActiveRecord 查询如下所示。

0 投票
1 回答
995 浏览

gps - 将奇怪的 lat/lng 格式转换为十进制

我有一个设备以他们描述为“ddmm.mmmm”的格式向我报告其位置

它看起来像这样:

纬度:5108.5837 N 经度:00052.6334 E

任何人都知道如何将其转换为可以与 RGeo 一起使用的普通十进制数?

0 投票
1 回答
723 浏览

ruby-on-rails - 保存记录后,activerecord-postgis-adapter 返回字符串而不是几何

从数据库中检索几何列的值时出现问题。我保存一个RGeo::Cartesian::PolygonImpl实例,重新加载记录,当我检索该值时,我得到一个String而不是几何。

我的config/database.yml有:

我的表具有以下列定义:

我的模型具有以下设置:

通过 Rails 控制台,我正在创建一个多边形并将其保存到数据库(为简洁起见,输出被删节):

此时,如果我得到 的值property.parcel,我就正确地得到了RGeo::Cartesian::PolygonImpl。但是,如果我现在重新加载记录,我会得到一个字符串:

现在,要注意的一件有趣的事情是,如果我#pluck在 上使用ActiveRecord::Relation,我确实得到了 RGeo 多边形:

因此,我认为 Rails 在通过列访问器访问时不知道将值转换为 Geometry 存在问题,但我不完全确定为什么会发生这种情况。

我的项目具有以下设置:

  • 红宝石 2.1.5
  • 导轨 4.1.8
  • activerecord-postgis-适配器 2.2.1
  • rgeo 0.3.20
  • rgeo-activerecord 2.0.0
  • Postgres 9.3.5
  • 地理信息系统 2.1.4
0 投票
1 回答
209 浏览

ruby-on-rails - Heroku 上的未定义方法(使用 Puma)

我们将 Postgis 适配器与 Ruby on Rails 一起使用,并且我们正在尝试将 Puma on Heroku 用于我们的生产环境。我们的测试在开发系统上完美通过。此外,该服务器在除 Heroku 之外的所有生产服务器上都能完美运行,但是一旦我们在 Heroku + Puma(或 Unicron)上运行它,就会出现异常。

附带说明一下,当在 Heroku 上使用 Webrick 部署时,应用程序可以顺利运行。

当使用 puma(稍后尝试使用 unicorn)作为默认 Web 服务器时,一切都很顺利,但只有一件事:

我正在使用 RGeo gem 来跟踪一些蜂巢位置。当切换到 Puma (Unicorn) 时,在我的 Javascript 视图中调用@hive.current_location.lon@hive.current_location.lat抛出错误:

ActionView::Template::Error (undefined method 'lon' and 'lat' for #<RGeo::Cartesian::PointImpl:0x007f700846c970>)

同时,我尝试通过以下方式访问 current_location 经纬度heroku run rails console

有趣的是,在 Heroku 控制台上获取 lat 和 long 值会返回正确的值。看来问题是由美洲狮和独角兽引起的。

有什么建议吗?