オープンソースツールを使用してシェイプファイルにプロジェクションを追加する方法は?


10

プロジェクションなしでシェープファイルをいくつか与えられました。だから私はそれをグーグルマップに表示するために投影を追加する必要があります。必要な投影情報はhttp://spatialreference.org/ref/epsg/2066で見つかりました。

質問:
オープンソースメソッドを使用して投影を追加するにはどうすればよいですか(ESRIのソフトウェアにアクセスできません)?

ありがとう
クリス

回答:


16

GDALのogr2ogrを使用します。

ogr2ogr -a_srs EPSG:2066 output.shp input.shp

ogrの優れた点は、既存のPRJファイルを入力としても使用できることです。

ogr2ogr -a_srs input.prj output.shp input.shp


2
上記のユーティリティを試すと、「座標を変換できません。ソースレイヤーに座標系がありません。-s_srsを使用して座標系を設定してください。」というエラーが表示されます。
ChrisJ

@chris間違った用法を書いたので、a_srsで出力プロジェクションを「割り当て」てみてください
SaultDon

-a_srsに.prjを指定できることを知りませんでした。ありがとう!
2015年

7

.shpファイルの投影は、shapefilename.prjにあります。これは基本的にテキストファイルであり、情報が含まれています。シェイプファイルのいくつかを見て、情報がどのように書き込まれるかを理解してください。または、それほど複雑ではありません。同じプロジェクションに他の.shpファイルがある場合は、それをコピーして名前を適宜変更します。


オンラインで見つけた情報を含むファイルを手動で作成しました。しかし、それはまだ正しく表示されていません。このデータを使用して投影ファイルを作成するために使用できるユーティリティはありますか?
ChrisJ

3
また、.PRJファイルを見つけてダウンロードし、.SHPファイルと同じプレフィックスに名前を変更するSpatialreference.orgを使用することもできます
Mike T


2

投稿したリンクから.prjファイルをダウンロードし、シェイプファイルに合わせて名前を変更します。


1
これは、任意の中間データを作成する必要はありませんことを考えると、おそらくも最も簡単な方法です
SaultDon

0

Spatialreference.orgからの投影参照を.prjファイルに書き込む小さなスクリプトを添付してください。ディレクトリ内の指定されたすべてのファイルに投影ファイルを追加します。たとえば、ディレクトリE:\内のすべてのシェープファイル。埋め込む投影のEPSGコード、投影ファイルを追加するファイルの拡張子、およびこれらが存在するディレクトリについて心配する必要があります。すべてのサブディレクトリを再帰的に通過するため、注意して使用してください。

    import os

    def getWKT_PRJ (epsg_code):
     import urllib.request, urllib.parse, urllib.error

    # Access projection information
     wkt = urllib.request.urlopen("http://spatialreference.org/ref/epsg/{0}/prettywkt/".format(epsg_code))
     decoded = (wkt.read().decode('utf-8')) 

    # Remove spaces between charachters
     remove_spaces = decoded.replace(" ","")        
    # Place all the text on one line
     output = remove_spaces.replace("\n","")
     return output

    def referencer(folder_path, extension):
        for path, subdirs, files in os.walk(folder_path):
            for name in files:
                file_extension = os.path.splitext(name)[-1]
                if(extension in file_extension):
                    file_path = os.path.join(path,name)
                    file_name = os.path.splitext(file_path)[0]
                    prj = file_name + ".prj"
                    projection = open(prj,"w")
                    projection.write(epsg)
                    projection.close()

    epsg = getWKT_PRJ("25831")              
    referencer('E:\Testfolder', '.shp')

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.