座標系お気に入り


ArcGISの座標系のお気に入り( User Profileに入るやつ )にPRJファイルを入れるコード。
昔はどこかにprjファイルが居た気がするけどいない & [地理座標]-[アジア]-みたいに選んでいたがイライラするので。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import arcpy
import os
import codecs
import re

"""
出力対象パスを取得
%appdata%\ESRI\Desktop10.4\ArcMap\Coordinate Systems
Desktop10.4はバージョン次第
"""
def getCoordsPath():
  app_data_path = os.getenv('APPDATA')

  # バージョン取得
  arc_version = arcpy.GetInstallInfo()['Version']

  # 10.4.1などマイナーバージョンがついていたら10.4などに直す
  v_re = re.compile(r"(\d+)\.(\d+)\.(\d+)")
  m = v_re.match(arc_version)
  if m:
    arc_version = str(m.group(1)) + '.' + str(m.group(2))

  # ユーザディレクトリの取得
  pathBase = '{0}\\ESRI\\Desktop{1}\\ArcMap\\Coordinate Systems'.format(app_data_path, arc_version)
  return pathBase

"""
arcpy.SpatialReferenceをファイルに書出し
"""
def exportSpatialReference( sr, fileName):
  # 今一つ意味不明だが '文字' を "文字" にしとかないと読めないことがあるc1-225?
  with open(fileName, 'w') as prj_file:
    prj_file.write(sr.exportToString().replace("'", '"'))

"""
存在しなければディレクトリを作成
"""
def createDirIfNotExist(targetDir):
  if not os.path.isdir(targetDir):
    os.makedirs(targetDir)

"""
公共測量座標系の登録
"""
def createCS19( base_wkid, post_name, targetDir):
  for i in range(19):
    sr = arcpy.SpatialReference(base_wkid + i)
  
    fileName = os.path.join( targetDir, u'平面直角座標系_第' + str(i+1).zfill(2) + u'系(' + post_name + ').prj' )
    exportSpatialReference( sr, fileName )


"""
メインロジック
"""
def main():

  pathBase = getCoordsPath()
  print pathBase

  #----------------------------------------#
  #-------------    TOKYO    --------------#
  targetDir = os.path.join( pathBase, 'TOKYO' )
  #存在しなければTOKYOディレクトリを作成
  createDirIfNotExist(targetDir)

  sr = arcpy.SpatialReference(4301)
  fileName = os.path.join( targetDir, u'日本測地系(TOKYO).prj' )

  exportSpatialReference(sr, fileName)
  # 19座標系作成
  createCS19(30161, u'TOKYO', targetDir)

  #----------------------------------------#

  #----------------------------------------#
  #------------    JGD2000    -------------#
  targetDir = os.path.join( pathBase, 'JGD2000' )
  #存在しなければTOKYOディレクトリを作成
  createDirIfNotExist(targetDir)

  sr = arcpy.SpatialReference(4612)
  fileName = os.path.join( targetDir, u'日本測地系(JGD2000).prj' )

  exportSpatialReference(sr, fileName)
  # 19座標系作成
  createCS19(2443, u'JGD2000', targetDir)
  
  #----------------------------------------#

  #----------------------------------------#
  #------------    JGD2011    -------------#
  targetDir = os.path.join( pathBase, 'JGD2011' )
  #存在しなければTOKYOディレクトリを作成
  createDirIfNotExist(targetDir)

  sr = arcpy.SpatialReference(6668)
  fileName = os.path.join( targetDir, u'日本測地系(JGD2011).prj' )

  exportSpatialReference(sr, fileName)
  # 19座標系作成
  createCS19(6669, u'JGD2011', targetDir)
  
  #----------------------------------------#

  
  #----------------------------------------#
  #------------    WGS1984    -------------#

  targetDir = os.path.join( pathBase, 'WGS1984' )
  #存在しなければTOKYOディレクトリを作成
  createDirIfNotExist(targetDir)

  sr = arcpy.SpatialReference(3857)
  fileName = os.path.join( targetDir, u'WGS84 web mercator (auxiliary sphere).prj' )
  exportSpatialReference(sr, fileName)

  sr = arcpy.SpatialReference(4326)
  fileName = os.path.join( targetDir, u'WGS84.prj' )
  exportSpatialReference(sr, fileName)

  #----------------------------------------#

# メインロジックの呼び出し
if __name__ == '__main__':
    main()
カテゴリー: 開発環境 タグ: , パーマリンク