这两个投影坐标系是一样的吗?Xian_1980_GK_CM_111E 和 Xian_1980_3_Degree_GK_Zone_38
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这两个投影坐标系是一样的吗?Xian_1980_GK_CM_111E 和 Xian_1980_3_Degree_GK_Zone_38相关的知识,希望对你有一定的参考价值。
如果不一样的话,在arcgis中该如何转换?
(1)Xian_1980_GK_CM_111E
西安80投影坐标系,中央经线在东经111度,横坐标前不加带号。
(2)Xian_1980_3_Degree_GK_Zone_38
西安80投影坐标系,3度分带,中央经线在东经114度,横坐标前有带号为38。
他们采用的地理坐标系相同,投影坐标系不同,分别选用6度与3度带投影,所以投影带与投影带中央子午线不同。
在arcmap中可以进行转换,且不涉及地理坐标系的转换:
(1)矢量数据坐标系转换:工具箱--数据管理工具--投影和变换--要素--投影
(2)栅格数据坐标系转换:工具箱--数据管理工具--投影和变换--栅格--投影栅格
西安80投影坐标系,6度分带,中央经线在东经111度,横坐标前不加带号
Xian_1980_3_Degree_GK_Zone_38
西安80投影坐标系,3度分带,中央经线在东经114度,横坐标前有带号38 参考技术B Xian_1980_GK_CM_111E
西安80投影坐标系,6度分带,中央经线在东经111度,横坐标前不加带号
Xian_1980_3_Degree_GK_Zone_38
西安80投影坐标系,3度分带,中央经线在东经114度,横坐标前有带号38
在arcgis中看你的数据是矢量还是栅格,变换坐标在工具箱-数据管理工具-投影和变换-栅格/要素-投影
GeoTools坐标转换(投影转换和仿射变换)
GeoTools是在java下的gis开源软件,以下介绍坐标转换的两种方法:投影转换和仿射变换
- 投影转换
这里以xian80经纬度坐标转xian80,3度分带 111中央经线平面坐标为例
转换函数如下:
1 Point pointXian80 = projectTransform(lon, lat, "EPSG:4610", "EPSG:2382");
1 /** 2 * 投影转换, lon=经度,lat=纬度,ESPG格式(例):EPSG:4610 3 */ 4 public static Point projectTransform(double lon, double lat, 5 String epsgSource, String epsgTarget) throws FactoryException, 6 MismatchedDimensionException, TransformException { 7 // 原始坐标点 8 // PS:通常逻辑上理解经度应该是横坐标x,纬度是y,可是这里经度要填到y,纬度x,否则会报错 9 Point sourcePoint = JtsHelper.createPoint(lat, lon); 10 11 // 定义转换前和转换后的投影,可以用ESPG或者wkt 12 // "PROJCS[\"Xian_1980_3_Degree_GK_CM_111E\",GEOGCS[\"GCS_Xian_1980\",DATUM[\"D_Xian_1980\",SPHEROID[\"Xian_1980\",6378140.0,298.257]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Gauss_Kruger\"],PARAMETER[\"False_Easting\",500000.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",111.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"; 13 // CoordinateReferenceSystem mercatroCRS = CRS.parseWKT(strWKTMercator); 14 CoordinateReferenceSystem crsSource = CRS.decode(epsgSource); 15 CoordinateReferenceSystem crsTarget = CRS.decode(epsgTarget); 16 // 投影转换 17 MathTransform transform = CRS.findMathTransform(crsSource, crsTarget); 18 Point pointTarget = (Point) JTS.transform(sourcePoint, transform); 19 20 return pointTarget; 21 }
关于定义坐标系的说明,GeoTools中定义坐标系有两种方法,一是坐标系的wkt,二是ESPG
坐标系的wkt可以从arcgis的prj文件中过去,用记事本打开prj文件,里面的内容就是该坐标系的wkt格式内容,例如:PROJCS[\"Xian_1980_3_Degree_GK_CM_111E\",GEOGCS[\"GCS_Xian_1980\",DATUM[\"D_Xian_1980\",SPHEROID[\"Xian_1980\",6378140.0,298.257]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Gauss_Kruger\"],PARAMETER[\"False_Easting\",500000.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",111.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]
获取到wkt后,可以通过 CoordinateReferenceSystem mercatroCRS = CRS.parseWKT(strWKTMercator); 获取到坐标系对象
另一种方法是ESPG,意思是每一个坐标系都有一个ESPG标准的号码,查询坐标系的ESPG可通过以下网站 http://spatialreference.org/
PS:当转换的两种坐标系的datum不同,会报错Bursa-Wolf parameters,暂时未解决
- 仿射变换
代码如下:
首先是输入三组参考点,前三个是转换前,后三个是转换后
最后结果是pointReuslt
1 // 参考点坐标 2 Coordinate s1 = new Coordinate(429275.549, 2801455.153); 3 Coordinate s2 = new Coordinate(428110.626, 2792148.620); 4 Coordinate s3 = new Coordinate(428966.479, 2800016.622); 5 6 Coordinate t1 = new Coordinate(4628.339, 801349.338); 7 Coordinate t2 = new Coordinate(3515.906, 792036.308); 8 Coordinate t3 = new Coordinate(4327.381, 799909.069); 9 // 建立仿射变换对象 10 AffineTransformationBuilder afb = new AffineTransformationBuilder(s1, 11 s2, s3, t1, t2, t3); 12 AffineTransformation atf = afb.getTransformation(); 13 14 Point pointReuslt = JtsHelper.createPoint(x,y); 15 16 // 坐标转换 17 pointReuslt.apply(atf);
以上是关于这两个投影坐标系是一样的吗?Xian_1980_GK_CM_111E 和 Xian_1980_3_Degree_GK_Zone_38的主要内容,如果未能解决你的问题,请参考以下文章