问题标签 [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-on-rails - Rails RGeo::Geos.supported? False 无法使 rgeo-shapefile 工作
尝试使这个上传 shapefile 的示例与我的 rails 设置一起使用,并且从控制台运行,我得到返回:
RGeo::Error::RGeoError: GEOS 不可用,但需要正确解释 shapefile 中的多边形。
还
RGeo::Geos.supported? 返回False
我正在运行 - ruby 版本 2.0.0p576 和 rails 版本 4.2.0
包含的 gem 有:gem 'activerecord-postgis-adapter'、'3.0.0.beta2' gem 'rgeo-shapefile' gem 'dbf'
我做错了什么,我在哪里可以找到找不到 GEOS 的原因?谢谢!
ruby - RGeo PostGIS 多表查询
以下查询作为原始 sql 运行良好,但因为它命中 2 个模型,我不确定如何在活动记录中构造它......
我怎么能去建造这个?不是加盟所以...
谢谢!
ruby - 尝试使用 RGeo Ruby gem 导入 shapefile,堆栈级别太深
我不知道这是否是我的代码中的一些交互,或者可能是我正在使用的 shapefile 中的命名约定,但以下代码会产生一条Stack level too deep
消息
模型迁移:
schema.rb 的相关部分:
回溯指向active_record/transactions.rb
第 286 行:
什么都试过了。任何帮助,将不胜感激。
编辑:如果有人想知道这些参数,在失败的调用中他们解析为 guid:'6020048.00',和 country_code:'ca'。
我还应该补充一点,日志显示了这一点:
它显示的 SQL 在控制台中执行得很好!这就是疯狂的一点。这向我表明问题出在一些 before_save 方法上,但我没有定义任何方法。
postgis - 如何使 RGeo::Feature::Geometry 方法可用于 RGeo::Geographic::SphericalMultiPolygonImpl?
我在 Ubuntu 上使用带有 PostGIS、rgeo 和 activerecord-postgis-adapter gem 的 Rails 4.2。我还安装了以下库:libgeos++-dev libgeos-3.4.2 libgeos-c1 libgeos-dbg libgeos-dev libgeos-doc libgeos-ruby1.8 ruby-geos。当我调用包含时,会引发 RGeo::Error::UnsupportedOperation?在 RGeo::Geographic::SphericalMultiPolygonImpl 上。如何使 Feature::Geometry 方法可用于我的 RGeo::Geographic::SphericalMultiPolygonImpl?
ruby-on-rails - NoMethodError 使用 activerecord_postgis_adapter
我尝试按照 README 安装 activerecord-postgis-adapter 但无法创建模型实例,因为我不断收到下面提到的错误:
NoMethodError: nil:NilClass 的未定义方法“点”
这是我的不同文件的样子:
Location.rb(模型,更新代码)
宝石文件
配置/应用程序.rb
配置/数据库.yml
在我尝试检索记录时添加记录后,我得到以下信息:
想知道为什么会这样,或者我该如何解决?更具体地说,为什么它是 NilClass 以及为什么找不到 #inspect?
从我的 schema.rb
我正在使用 Rails 4.2.1。
ruby-on-rails - activerecord_postgis_adapter:nil:NilClass 的未定义方法“点”
问题
90% 确定这是我的设置错误,但我无法执行 self.factory 并尝试访问 lonlat 给了我一个异常“nil:NilClass 的未定义方法‘点’”
我可以
设置 lonlat 使用:
这给了我0101000020E610000061C3D32B65965DC03657CD7344F64040
在数据库中的值。
我不能使用:
问题
我需要在模型中设置一些特定的东西吗?
join - 写入连接表记录的优化
该应用程序基于 PostGIS,并使用 RGeo 的 simple_mercator_factory 存储数据。
创建多边形记录并且与点的关联是静态的(即不需要更新)。为了减少 postGIS 计算的开销,使用属于多边形的点填充连接表并使用 bTree(代替 rTree)对索引连接表进行搜索是有意义的。
问题是有效地创建连接记录。现在:
查询计划是可以接受的
但是,该@add_point
函数的时钟在 14 到 16 毫秒之间。对于一组 83 条记录,我们看起来大约是 1.6 秒。但是总数不匹配:
Completed 302 Found in 7796.9ms (ActiveRecord: 358.5ms)
运行一个单独的方法来执行相同的查询计划(和时间),而不写入连接记录完成 出现
Completed 200 OK in 1317.5ms (Views: 49.8ms | ActiveRecord: 64.0ms)
两个问题。更平凡的是,除了开发模式条件之外,为什么总数会激增这么多 - 我期待大约 3 秒(1.6 + 1.3)?
但更重要的是,有没有办法以更有效的方式将连接表记录写入单独的线程(after_update?)(考虑到可以写入 1000 条记录......)
sql - 在rails或sql中克服“ActiveRecord::StatementInvalid:PG::AmbiguousFunction”的方法。(st_intersects 不是唯一的函数名)
当我在 rails 中运行这个命令时:
在 SQL 中运行此命令:
我收到此错误:
我不知道如何添加显式类型转换,老实说,我也不清楚这甚至意味着什么。我看到上面的 st_intersects 函数传入了第二个参数“未知”。也许我可以“投射”它并让它工作......?
我认为问题可能是st_intersects
由于其“函数重载”特性,postgresql 中有多个函数定义。我不是第一个在这个系统上安装 postgresql/postgis 的开发人员,我的一个承包商做到了,所以我担心我们可能会重复我们的努力。
我在 Ubuntu“12.04 LTS”VPS 上使用 postgresql 和 postgis 运行 rails 服务器。
我很确定我可以重新安装 postgis 但这会清除我的承包商的代码,这些代码使用 pg_routing 做了一些我不想接触的非常复杂的事情。如果必须,我将启动一个新的 linode 并在其上运行代码,但这似乎有点浪费,甚至可能更像是一种失败。
如果我无法通过消除歧义来正确解决问题(这通常适用于 Mac 和 linux 发行版),我认为另一种解决方案是标记 postgresql 以忽略歧义并选择它遇到的第一个 st_intersects 函数.
其他注意事项:
- 我在 rgeo 中使用的几何工厂是“Geos”
- 几何是笛卡尔的,不是地理的
类似的问题(作为一个被 ORM 瘫痪的 Rails 开发人员,这仍然让我摸不着头脑):
ruby-on-rails-4 - 在 Elastic Beanstalk 上使用 rgeo 设置 RoR
我正在尝试在 Elastic Beanstalk 上启动并运行我的 RoR 应用程序,并且正在努力让 rgeo gem 正常工作。我在网络服务器上遇到的错误是:
当代码访问由数据库中的 POINT 数据类型支持的模型属性时,就会发生该错误。该错误通常是由于缺少依赖项,即此线程中描述的 geos 。所以我连接到底层 EC2 实例,安装 geos 并重新安装 rgeo gem。这解决了rails控制台中的问题:
但是,这并没有解决 Web 服务器中的错误。我很确定我不清楚 Elastic Beanstalk 环境,并且可能对底层 EC2 实例进行直接更改不会使应用程序实例可以使用依赖项。我确实知道我需要将依赖项添加到自定义 AMI 或 ebextensions 以供将来部署,但我想确保在完成该过程之前我的依赖项正常工作。任何指导将不胜感激。