Я начал с Как я могу преобразовать координаты шейп-файла? .
Реакция, с которой я столкнулся, подтолкнула меня [на мой взгляд, на правильный путь], но я все еще не смог решить мою проблему.
Одна проблема в том, что я еще не нашел правильную проекцию: https://gis.stackexchange.com/questions/13330/how-can-i-correctly-transform-unproject-from-lcc
РЕДАКТИРОВАТЬ: Ответ на этот вопрос на сайте ГИС, и я смог воспроизвести правильное преобразование с помощью инструмента командной строки 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]
- Почему результаты отличаются между RGeo и cs2cs?
- Как только я смогу заставить RGeo выполнить правильный перевод, есть ли способ создать надлежащую фабрику для преобразования полной геометрии вместо точки?
- Есть ли инструмент командной строки, который я могу использовать в качестве обходного пути для преобразования всех точек в моем шейп-файле, чтобы я мог продолжать свою жизнь?
В общем: кто-нибудь, пожалуйста, проинструктируйте меня, как правильно использовать эту библиотеку?
Большое спасибо за поиск.