ユーザーがシェープファイルをアップロードできるシステムを構築しています。次に、これらのシェープファイルを を使用して PostGIS に変換しshp2pgsql
ます。このコマンドには、EPSG コード形式の SRS ID が必要です。
*.prj
したがって、シェープファイルのファイル (WKT としてエンコードされた投影/空間参照システムを含む) を読み取って、対応する SRS ID を返すことができる ruby gem が必要です。
ユーザーがシェープファイルをアップロードできるシステムを構築しています。次に、これらのシェープファイルを を使用して PostGIS に変換しshp2pgsql
ます。このコマンドには、EPSG コード形式の SRS ID が必要です。
*.prj
したがって、シェープファイルのファイル (WKT としてエンコードされた投影/空間参照システムを含む) を読み取って、対応する SRS ID を返すことができる ruby gem が必要です。
参考までに、http://prj2epsg.org/では、PRJ ファイルを検索して SRID / EPSG コードを取得できます。
更新:サイトがダウンしています。この回答を参照してください: https://gis.stackexchange.com/questions/372381/is-there-an-alternative-to-prj2epsg-org
Ruby バインディングが GDAL に対してどのように機能するかはわかりませんが、OSR (GDAL の一部) は射影 WKT (テキスト) または SRID (整数) のいずれかを抽出できます。
Python/GDAL/OSR を使用したソリューションについては、この gis.SE の回答を参照してください。
更新: 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