我如何使用(Ruby)RGeo转换(取消)项目坐标

我开始使用如何转换Shapefile的坐标? 。

那里的反应使我开始[我认为]正确的轨道,但我仍然无法解决我的问题。

一个问题是我还没有找到正确的预测: https : //gis.stackexchange.com/questions/13330/how-can-i-correctly-transform-unproject-from-lcc

编辑:gis网站上的那个问题已得到解答,我能够使用PROJ命令行工具cs2cs重现正确的转换。 它看起来像这样:

larry$ cs2cs -f "%.8f" +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs +to +proj=lonlat +datum=WGS84 +ellps=WGS84 6011287.4999795845 2100857.2499904726 -122.40375492 37.74919006 0.00000000 

现在,我进行了正确的转换,我能够使用RGeo以简单的forms尝试相同的事情:

 ruby-1.9.2-p180 :001 > projection_str = ' +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs' => " +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs" ruby-1.9.2-p180 :002 > projection = RGeo::CoordSys::Proj4.new(projection_str) => # ruby-1.9.2-p180 :003 > desired_str = '+proj=lonlat +datum=WGS84 +ellps=WGS84' => "+proj=lonlat +datum=WGS84 +ellps=WGS84" ruby-1.9.2-p180 :004 > desired = RGeo::CoordSys::Proj4.new(desired_str) => # ruby-1.9.2-p180 :005 > RGeo::CoordSys::Proj4::transform_coords(projection, desired, 6011287.4999795845, 2100857.2499904726 ) => [-140.92282523143973, 30.16981659183029] 
  1. 为什么RGeo和cs2cs之间的结果不同?
  2. 一旦我可以让RGeo执行正确的翻译,有没有办法可以创建适当的工厂来转换完整的几何而不是点?
  3. 是否有一个命令行工具,我可以使用它作为变换器来转换我的shapefile中的所有点,以便我可以继续我的生活?

一般情况:有人请指导我如何正确使用这个库?

非常感谢你的期待。

作为一个黑暗中的狂野刺,因为我不知道RGeo甚至Ruby,尝试用他们的等效米代替你的坐标:1832244.0944819663048746863094224,640342.57048223700783128534419392(你可能不需要那个小数位数但是……)另一种可能性是交换坐标 – 也许RGeo做出一些非常规的假设。

如果你能够从Ruby调用可执行文件,你可以简单地使用ogr2ogr来转换你的shapefile。