Как я могу использовать (Ruby) RGeo для преобразования (непроецирования) координат

Я начал с Как преобразовать координаты шейп-файла?< /а> .

Ответ там направил меня на [как я думаю] правильный путь, но я до сих пор не смог решить свою проблему.

Одна проблема заключается в том, что я еще не нашел правильную проекцию: 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. Есть ли инструмент командной строки, который я могу использовать в качестве обходного пути для преобразования всех точек в моем шейп-файле, чтобы я мог продолжать свою жизнь?

В общем: кто-нибудь, пожалуйста, проинструктируйте меня, как правильно использовать эту библиотеку?

Большое спасибо за поиск.


person Larry    schedule 10.08.2011    source источник
comment
Вы когда-нибудь выясняли, как это сделать с RGeo?   -  person Michael Pell    schedule 06.04.2016


Ответы (1)


В качестве дикого удара в темноте, потому что я не знаю RGeo или даже Ruby, попробуйте заменить ваши координаты в футах их эквивалентом в метрах: 1832244.0944819663048746863094224, 640342.57048223700783128534419392 (хотя вам, вероятно, не понадобится такое количество знаков после запятой...) Другая возможность - поменять местами координаты - возможно, RGeo делает какие-то нетрадиционные предположения.

Если вы можете вызывать исполняемые файлы из Ruby, вы можете просто использовать ogr2ogr для преобразования ваших шейп-файлов.

person MerseyViking    schedule 10.08.2011
comment
Мерси. Ты мой герой. Если вы живете недалеко от Сан-Франциско, я хочу угостить вас кружкой пива. Вот что сработало: 1. Измените предоставленный файл .prj с LambertConformal_Conic на Lambert_Conformal_Conic_2SP — (Спасибо Фрэнку Вармердаму osgeo-org.1803224.n2.nabble.com/) 2. ogr2ogr -s_srs realtor_neighborhoods.prj -t_srs EPSG:4326 ./output.shp realtor_neighborhoods.shp - person Larry; 10.08.2011
comment
Оплатите мой рейс из Великобритании, и у вас есть сделка! :) Рад, что вам удалось заставить его работать. - person MerseyViking; 15.08.2011