Как я могу прочитать WKT из шейп-файла .prj?

#ruby #rubygems #postgis #shapefile #map-projections

#ruby #rubygems #postgis #шейп-файл #карта-проекции

Вопрос:

Я создаю систему, которая позволяет пользователям загружать шейп-файлы. Затем он преобразует эти шейп-файлы в PostGIS, используя shp2pgsql . Для этой команды требуется идентификатор SRS в виде кода EPSG.

Итак, мне нужен ruby gem, который может считывать файл шейп *.prj -файла (который содержит систему проекции / пространственной привязки, закодированную как WKT) и возвращать соответствующий идентификатор SRS.

Ответ №1:

Я не уверен, как привязки Ruby работают с GDAL, но OSR (часть GDAL) может извлекать либо проекцию WKT (текст), либо SRID (целое число).

Посмотрите на эту гис.SE ответ для решения с помощью Python / GDAL / OSR.

Обновление: оказывается, привязки Ruby работают хорошо, как и ожидалось. Чтобы начать работу, попробуйте этот код:

 require 'gdal/osr'

prj_fname = 'myfile.prj'
prj = File.open( prj_fname )

# Import the WKT from the PRJ file
srs = Gdal::Osr::SpatialReference.new()
srs.import_from_wkt( prj.read )

# Various exports
puts srs.export_to_wkt

srs.auto_identify_epsg
puts srs.get_authority_name(nil)
puts srs.get_authority_code(nil)
  

Если вам нужен какой-то другой аспект проектирования, изучите доступные общедоступные методы:

 srs.public_methods.sort
  

Комментарии:

1. Чтобы использовать gdal с ruby, нам нужно создать библиотеку с именем «libgdal-ruby». Вот скрипт, с которым я работаю с пространственной ссылкой osr. sudo apt-get устанавливает libgdal-ruby. С помощью irb нам нужно запросить ‘gdal / gdal’ и ‘gdal / ogr’.

2. Да, привязки GDAL / OSR выглядят хорошо, но документация скудна. Обычно вы можете переводить примеры с Python на Ruby без особых проблем (просто небольшие различия в именах методов).

3. Как вы устанавливаете это расширение gem (часть osr)? Я успешно установил драгоценный камень ‘gdal’, на моем Mac установлена вся прошивка и так далее. Но не могу получить доступ к osr биту

Ответ №2:

К вашему сведению, http://prj2epsg.org / позволяет вам искать файлы PRJ и получать код SRID / EPSG.

Обновление: сайт не работает. Смотрите этот ответ: https://gis.stackexchange.com/questions/372381/is-there-an-alternative-to-prj2epsg-org