【问题标题】:How Can I Use (Ruby) RGeo to Transform (Unproject) Coordinates我如何使用(Ruby)RGeo 来转换(Unproject)坐标
【发布时间】:2011-10-23 19:26:11
【问题描述】:

我从 How can I transform the coordinates of a 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 以简单的形式尝试同样的事情:

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)
 => #<RGeo::CoordSys::Proj4:0x805cba18 " +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 +towgs84=0,0,0"> 
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)
 => #<RGeo::CoordSys::Proj4:0x805271ac " +proj=lonlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"> 
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 coordinates gis coordinate-systems proj


【解决方案1】:

因为我不知道 RGeo 甚至 Ruby,所以作为一个在黑暗中的狂野刺,尝试将您的坐标以英尺替换为等效的米:1832244.0944819663048746863094224, 640342.57048223700783128534419392(尽管您可能不需要那个小数位数。 ..) 另一种可能性是交换坐标——也许 RGeo 做了一些非常规的假设。

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

【讨论】:

  • 默西。你是我的英雄。如果你住在旧金山附近的任何地方,我想给你买一瓶或 7 瓶啤酒。以下是有效的方法: 1. 将提供的 .prj 文件从 LambertConformal_Conic 修改为 Lambert_Conformal_Conic_2SP -(归功于 Frank Warmerdam osgeo-org.1803224.n2.nabble.com/…) 2. ogr2ogr -s_srs realtor_neighborhoods.prj -t_srs EPSG:4326 ./output.shp realtor_neighborhoods.shp
  • 为我从英国起飞的航班付款,您就有了优惠! :) 很高兴你设法让它工作。
猜你喜欢
  • 2020-09-15
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多