如何转换Shapefile的坐标?

时间:2011-08-06 00:32:35

标签: ruby-on-rails ruby gis postgis shapefile

我正在尝试将邻居数据存入我的应用程序,而我正在使用的数据出现问题,这是我从here获得的。

此文件包含具有旧金山社区的shapefile。我正在运行Ruby on Rails框架,我目前正在使用GeoRuby来解析shapefile。

代码如下所示:

def self.run_import
  shpfile = '/path/to/realtor_neighborhoods/realtor_neighborhoods'
  ShpFile.open(shpfile) do |shp|
    shp.each do |shape|
      # This gets the first (and only) Polygon from each MultiPolygon
      polygon = shape.geometry.geometries.first 
      puts polygon.inspect
    end
  end
end

代码能够解析文件,但我无法理解解释的坐标。对于有效的纬度和经度,当我期望坐标在-180和180之间时,所有点都具有数百万的值。看一个示例点:

<GeoRuby::SimpleFeatures::Point:0x00000104566a08 @srid=4326, @with_z=false, \
   @with_m=false, @x=6015402.9999795845, @y=2114960.4999904726, @z=0.0, @m=0.0>,

这些坐标值的格式是什么?如何将它们转换为对我有意义的值? (即基于SRID 4326&lt; WGS84空间参考系统的纬度/经度)

提前谢谢!

4 个答案:

答案 0 :(得分:6)

形状文件中的数据为projected geographic data

从你的问题来看,听起来你真的只想把你的数据放在lat / long。为此,您需要重新投放数据。我不是一个红宝石家伙,但快速的网络搜索显示georuby不支持重新投影http://georuby.rubyforge.org/,但是rgeohttp://www.daniel-azuma.com/blog/archives/28

如果您想了解有关地图投影的更多信息,请查看here

顺便提一下,有一个名为http://gis.stackexchange.com

的GIS(地理信息系统)专家的stackexchange站点

答案 1 :(得分:1)

我注意到这仍然是一个视图记录。我最终在与RGeo挣扎,但还有另一种解决方案。如果您能够/愿意在执行ruby代码之外/之前进行转换,请查看ogr2ogr。

我在底部的评论中有更多细节: How Can I Use (Ruby) RGeo to Transform (Unproject) Coordinates

答案 2 :(得分:0)

我遇到了这个问题,因为我想将Shapefile中提供的点从OSGB36英国国家网格格式转换为WGS84格式(十进制度)。我花了很多时间搞清楚这一点,所以希望这段代码能证明是有用的。

此代码使用ffi-ogr gem并需要GDAL库:

require 'ffi-ogr'

data = OGR.read file_name
new_spatial_ref = OGR.import_sr(4326, 'epsg')

data.layers.each do |layer|
  transformer = OGR::CoordinateTransformation.find_transformation(layer.spatial_ref, new_spatial_ref)

  layer.features.each do |feature|
    geometry = OGR::Tools.cast_geometry(feature.geometry)
    geometry.transform(transformer)

    # Do something with geometry here
  end
end

答案 3 :(得分:0)

我遇到了同样的问题:想要将投影地理数据转换为Lat / Long值。

ogr2ogr工具比我预期的更容易使用。

安装:

apt-get install gdal-bin

获取有关shapefile的信息:

ogrinfo data.shp -al -so

转换为Lat / Long和JSON:

ogr2ogr -f GeoJSON -t_srs WGS84 data.json data.shp