arcpy投影这一个专题从文件位置、文件含义、空间参照获取、转换关系查询、投影定义、自定义转换关系、投影变换这几个角度上系统的进行了介绍,整理出了:
arcpy投影(一)——prj、gtf文件定义、路径及解析(arcmap,arcpro)
arcpy投影(二)——基准面变换概念及参数、空间参考对象获取、变换关系获取方法梳理与解析(Spatial Reference、ListTransformations)
arcpy投影(三)——定义投影、地理变换关系自定义和投影变换Project_managemen(含基准面/椭球体转换参数使用方法,arcpro/arcmap)
三篇文章,本文为第一篇:
一、投影坐标prj文件,转换gtf文件
ArcGIS的prj文件是一个专门用来描述坐标系投影的文件,里面定义了坐标系的名称、长短半轴、基准面、投影参数等一些其他重要的信息。
gtf文件是专门用来描述坐标转换关系的文件,在你自定义转换关系(Create Custom Geographic Tramsformation)后均会在默认路径下生成,该文件中包含了转换关系名称、原始坐标系名称及相应参数、目标坐标系名称及相应参数,以及两个坐标系统转换的方法与参数。
二、文件路径
无论是ArcMap还是Arcpro,这两种文件都是放在C盘用户文件夹在的AppData文件夹中,要注意的是AppData文件夹为隐藏文件夹,如果找不到的话可以勾选文件夹“查看”中的“隐藏的项目”选项。
(一)ArcMAP路径
ArcMap中自定义坐标系和投影关系分别放在Coordinate System和CustomTransformations文件夹中
(1)自定义坐标系
若Coordinate System文件夹不存在,则在第一行路径下进行创建,若存在prj文件直接放入到文件夹中
C:\User\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcMap\
C:\User\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcMap\Coordinate System
(2)转换关系
同上
C:\User\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcToolbox\
C:\User\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcToolbox\CustomTransformations
(二)ArcPro路径
(1)自定义坐标系
在pro中进行了测试,新建Coordinate System文件夹等方式都不可以识别到,通过收藏的方式可以进行识别,自己弄的投影可以放到这个路径下,但是经测试目前pro在这个路径下只能识别出来全英文名的prj文件,如果使用Arcpy进行处理时,可以直接通过路径进行指认。
C:\User\Administrator\AppData\Local\ESRI\ArcGISPro\Favorites
(2)转换关系
同ArcMap,注意如果要使用Arcpro的Arcpy进行投影关系的变换,一定要检查该路径下是否已经存在对应的转换关系,没有的话要进行生成或从他处拷贝,否则函数会报参数错误,这部分后面的文章中会提到。
C:\User\Administrator\AppData\Roaming\Esri\ArcGISPro\ArcToolbox \
C:\User\Administrator\AppData\Roaming\Esri\ArcGISPro\ArcToolbox\CustomTransformations
三、文件内容解析
(一)投影坐标系prj文件
PROJCS[
"Ain_el_Abd_UTM_Zone_38N"
,GEOGCS[
"GCS_Ain_el_Abd_1970"
,DATUM["D_Ain_el_Abd_1970"
,SPHEROID["International_1924",6378388.0,297.0]]
,PRIMEM["Greenwich",0.0]
,UNIT["Degree",0.0174532925199433]
]
,PROJECTION["Transverse_Mercator"]
,PARAMETER["False_Easting",500000.0]
,PARAMETER["False_Northing",0.0]
,PARAMETER["Central_Meridian",45.0]
,PARAMETER["Scale_Factor",0.9996]
,PARAMETER["Latitude_Of_Origin",0.0]
,UNIT["Meter",1.0]
,AUTHORITY["EPSG",20438]
]
这是一个投影坐标系。
PROJCS:代表的是其投影坐标系。
投影名称是:Ain_el_Abd_UTM_Zone_38N
基准面信息:D_Ain_el_Abd_1970
椭球体:SPHEROID[“International_1924”,6378388.0,297.0]-长半轴和反扁率
单位:UNIT[“Degree”,0.0174532925199433]
PARAMETER:代表投影重要的参数信息
(二)地理坐标prj文件
GEOGCS[
"GCS_Beijing_1954"
,DATUM[
"D_Beijing_1954"
,SPHEROID["Krasovsky_1940",6378245.0,298.3]
]
,PRIMEM["Greenwich",0.0]
,UNIT["Degree",0.0174532925199433]
,AUTHORITY["EPSG",4214]
]
这是一个经纬度坐标系。
GEOGCS:代表是其地理坐标系
基准面:D_Beijing_1954
椭球体:Krasovsky_1940
长半轴:6378245.0
反扁率:298.3
中央经线:PRIMEM[“Greenwich”,0.0] - 格林威治
单位:UNIT[“Degree”,0.0174532925199433]
(三)变换关系gtf文件
GEOGTRAN["CGS2000_TO_BJ1954", #转换关系名称
GEOGCS["GCS_China_Geodetic_Coordinate_System_2000", #数据原始坐标系名称
DATUM["D_China_2000", #原始坐标系椭球体名称及参数
SPHEROID["CGCS2000",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]
],
GEOGCS["GCS_Beijing_1954", #数据目标坐标系名称
DATUM["D_Beijing_1954", #目标坐标系椭球体名称及参数
SPHEROID["Krasovsky_1940",6378245.0,298.3]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]
],
METHOD["Geocentric_Translation"], #转换方法及参数
PARAMETER["X_Axis_Translation",0.0],
PARAMETER["Y_Axis_Translation",0.0],
PARAMETER["Z_Axis_Translation",0.0]
]
四、其他说明
1.以上是ArcGIS中投影文件和转换关系文件的含义、所在路径、内容结构和含义解释。
2.由于ArcMap所带的Arcpy为2.7版本,存在编码问题,同时很多三方库无法兼容,使用起来不是很友好,而Arcpro所带的Arcpy为python3.6版本,编码问题较少,同时能够更好的使用第三方库文件,Esri将大部分函数在老版本中的参数设定及命名直接搬到了新版本上,给用户带来很多便利,但仍存在部分细节性问题,目前网上资料较少,博主结合目前在做的工作,对投影转换部分进行梳理,欢迎大家一同交流进步。
3.文件参数解析部分参考了文章ArcGIS的.prj文件生成proj4格式的字符串,对博主的整理表示感谢。