Как я могу прочитать WKT из шейп-файла .prj? - PullRequest
1 голос
/ 13 октября 2011

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

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

Ответы [ 2 ]

2 голосов
/ 13 сентября 2012

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

1 голос
/ 16 октября 2011

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

См. этот ответ gis.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
...