我正在建立一个系统,让用户上传形状文件然后,它使用shp2pgsql将这些shapefile转换为postgis。此命令要求以epsg代码的形式提供srs id。
所以我需要一个ruby gem,它可以读取shapefile的*.prj文件(其中包含编码为WKT的投影/空间参考系统)并返回相应的SRS ID。

最佳答案

我不确定ruby绑定如何作用于gdal,但是osr(gdal的一部分)可以提取投影wkt(文本)或srid(整数)。
有关Python/GDAL/OSR的解决方案,请参见this gis.SE answer
更新:事实证明,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

08-27 03:05