プロジェクションなしでシェープファイルをいくつか与えられました。だから私はそれをグーグルマップに表示するために投影を追加する必要があります。必要な投影情報はhttp://spatialreference.org/ref/epsg/2066で見つかりました。
質問:
オープンソースメソッドを使用して投影を追加するにはどうすればよいですか(ESRIのソフトウェアにアクセスできません)?
ありがとう
クリス
プロジェクションなしでシェープファイルをいくつか与えられました。だから私はそれをグーグルマップに表示するために投影を追加する必要があります。必要な投影情報はhttp://spatialreference.org/ref/epsg/2066で見つかりました。
質問:
オープンソースメソッドを使用して投影を追加するにはどうすればよいですか(ESRIのソフトウェアにアクセスできません)?
ありがとう
クリス
回答:
ogr2ogr -a_srs EPSG:2066 output.shp input.shp
ogrの優れた点は、既存のPRJファイルを入力としても使用できることです。
ogr2ogr -a_srs input.prj output.shp input.shp
.shpファイルの投影は、shapefilename.prjにあります。これは基本的にテキストファイルであり、情報が含まれています。シェイプファイルのいくつかを見て、情報がどのように書き込まれるかを理解してください。または、それほど複雑ではありません。同じプロジェクションに他の.shpファイルがある場合は、それをコピーして名前を適宜変更します。
シェープファイルと同じベース名(つまり、foo.prj)で.prjファイルを作成し、テキストエディターでファイルを開いて、この場合はhttp://spatialreference.org/ref/epsg/2066/のコンテンツを追加します。prj /
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')
Geokettle http://www.spatialytics.org/を使用してみてください。シェープファイルを読み取り、変換にSRSを追加するオプションがあります。それ以外の場合は、ogr2ogr gui(Windowsのみ)を使用してsridを表示します