0

我有一个 Sinatra 应用程序,我正在使用postGeoJSON(多边形)到.. 在我之前,我正在寻找一个 gem/脚本来将 JSON 转换为 KML。到电子邮件(使用邮件gem)。

我能找到的最接近的东西是georuby,它似乎还没有这样的转换,肯定有办法......??或者也许这更好地手动实现:?

Ruby 新手(来自 Python/JavaScript 背景),因此非常感谢您的小步骤!

编辑:为了我的目的,更容易(“手动”)转换坐标,并插入模板 kml erb/ 字符串。

4

2 回答 2

1

(我也找不到将 KML 转换为 GeoJSON 的纯 Ruby 库......?)

如果ogr2ogr二进制文件在您的系统上可用并且您可以写入 tmp 目录:

require 'tmpdir'
require 'fileutils'

tmpdir = Dir.mktmpdir
geojson_path = File.join(tmpdir, 'a.geojson') # the input
kml_path = File.join(tmpdir, 'a.kml') # the output

File.open(geojson_path, 'w') do |f|
  # params[:geojson] is from the web request
  f.write params[:geojson]
end

Kernel.system 'ogr2ogr', '-f', 'KML', kml_path, geojson_path

# now you can email kml
kml = File.read(kml_path)

FileUtils.rm_rf tmpdir
于 2013-03-22T01:09:16.123 回答
0

您可以使用名为FFI-OGR的新 gem来执行此操作。

FFI 或Foreign Function Interface允许 Ruby 调用用其他语言编写的函数,而无需编写本机代码。FFI-OGR 在 Ruby 中包装了 OGR 的 C 实现。

添加gem 'ffi-ogr', git: 'https://github.com/scooterw/ffi-ogr'到您的Gemfile并运行bundle install. 然后,在您进行转换的任何脚本中,您将编写如下内容:

require 'ffi-ogr'

# read in GeoJSON
geojson = OGR.read 'path/to/file.geojson'

# output as KML, write to file
geojson.to_kml 'destination/of/file.kml'

GeoRuby 是相当新的,工具还没有很好地构建。但是,@scooterw正在领导开发一些具有基本功能的 Ruby 工具。

查看FOSS4G 2014 中的示例了解更多信息,并加入Github 上的 GeoRubyists 组

于 2014-10-20T15:11:04.233 回答