如何从shapefile .prj中读取WKT?

时间:2011-10-13 08:40:29

标签: ruby rubygems postgis shapefile map-projections

我正在构建一个允许用户上传shapefile的系统。然后使用shp2pgsql将这些shapefile转换为PostGIS。此命令需要以EPSG代码形式的SRS ID。

所以我需要一个ruby gem来读取shapefile的*.prj文件(其中包含编码为WKT的投影/空间参考系统)并返回相应的SRS ID。

2 个答案:

答案 0 :(得分:2)

仅供参考,http://prj2epsg.org/可让您查找PRJ文件并获取SRID / EPSG代码。

答案 1 :(得分:1)

我不确定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