GeoTools是在java下的gis开源软件,以下介绍坐标转换的两种方法:投影转换和仿射变换

投影转换

这里以xian80经纬度坐标转xian80,3度分带 111中央经线平面坐标为例

转换函数如下:

1 Point pointXian80 = projectTransform(lon, lat, "EPSG:4610", "EPSG:2382");

1 /**

2 * 投影转换, lon=经度,lat=纬度,ESPG格式(例):EPSG:46103 */

4 public static Point projectTransform(double lon, doublelat,5 String epsgSource, String epsgTarget) throwsFactoryException,6 MismatchedDimensionException, TransformException {7 //原始坐标点8 //PS:通常逻辑上理解经度应该是横坐标x,纬度是y,可是这里经度要填到y,纬度x,否则会报错

9 Point sourcePoint =JtsHelper.createPoint(lat, lon);10

11 //定义转换前和转换后的投影,可以用ESPG或者wkt12 //"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 returnpointTarget;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可通过以下网站 外链网址已屏蔽

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 = newAffineTransformationBuilder(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);

java转换投影坐标_GeoTools坐标转换(投影转换和仿射变换)相关推荐

  1. gps84转换gcj02公式_【测绘基础】关于投影坐标和坐标转换,这几点你不得不知道!...

    [测绘基础]关于投影坐标和坐标转换,这几点你不得不知道! 本文要点: 1.地理坐标系是什么?常见的地理坐标系有哪些? 2.投影坐标系是什么?常见的投影坐标系有哪些? 3.关于坐标转换. 4.如何在Ar ...

  2. java将投影坐标转为地理坐标_贡献高斯投影坐标与经纬度转换的java源码

    下载了好几个源程序都不能用,在他们的基础上经过我与公式的核对.现在将代码改成了java 以下是完整代码:绝对能用,我现在的项目中就用的这个. package tms.base.systemlib; @ ...

  3. ARCGIS中坐标转换及地理坐标、投影坐标的定义

    原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或 ...

  4. ARCGIS中坐标转换及地理坐标、投影坐标的定义(转载)

    转自http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或是说坐 ...

  5. (转)ARCGIS中坐标转换及地理坐标、投影坐标的定义

    原文地址:http://blog.sina.com.cn/s/blog_663d9a1f01017cyz.html 1.动态投影(ArcMap) 所谓动态投影指,ArcMap中的Data 的空间参考或 ...

  6. supermap iobjects 组件设置坐标,投影坐标之间的转换

    组件 :supermap iobjects java 功能使用: 1.设置地理坐标 2.投影坐标转投影坐标 3.地理坐标转投影坐标 4.投影坐标转地理坐标 注:注释的根据需要使用 public Res ...

  7. 地理坐标(经纬度)转换成投影坐标(XY坐标)

    前言:限于需求,项目中所有涉及到经纬度的字段都要转换成XY坐标,面向度娘之后发现都没有可用的,琢磨了之后在以为大佬博客中发现了宝藏 使用工具:Proj4 Proj4是一个JavaScript类库,其主 ...

  8. 学习笔记——【python】GetGeoTransform()使用,gdal截取图像,使用GDAL进行影像投影坐标、地理坐标、图上坐标的转换

    1. GetGeoTransform()使用.gdal截取图像 GetGeoTransform() GeoTransform[0],左上角横坐标(应该是投影坐标) GeoTransform[2],行旋 ...

  9. python 地理坐标与投影坐标的转换

    1. 地理坐标(WGS84)与投影坐标(UTM)的相互转换 from pyproj import Proj# 首先定义要转换的投影坐标系 proj1 = Proj("epsg:32601&q ...

  10. java解析shp文件以及坐标转换(工具类)

    百度找了很多大部分都是pom的,maven项目中的,但是用maven下载不了,只能一个jar一个jar下载了,中间也遇到了很多坑,都是pom中没有提到的架包 直接上代码,最后我会解析shp文件所用到的 ...

最新文章

  1. Python_note2 基本图形绘制+turtle库使用
  2. 四川启动西南知识产权大数据中心合作共建工作
  3. 浅谈文本词向量转换的机制embedding
  4. PAT (Basic Level) 1073 多选题常见计分法(恶心模拟)
  5. stl swap函数_C ++ STL | vector :: swap()函数与示例
  6. 理解SQL SERVER中的分区表(转)
  7. 大数据之-Hadoop3.x_MapReduce_序列化概述---大数据之hadoop3.x工作笔记0094
  8. 使 JavaScript 更加简洁的小技巧
  9. 一个简单的微服务项目带你上手spring cloud 全家桶
  10. MPLS virtual private network 地址重叠实验(华为设备)
  11. 界面猜拳游戏 java_java猜拳游戏 (3局2胜)
  12. 男生是学计算机网络还是应用,男生适合读计算机网络技术专业吗
  13. pajek的net文件格式
  14. 聊聊docker【二】基本命令
  15. 概率论中几个入门公式
  16. 基于Layabox引擎的魔塔微信小游戏设计与实现
  17. 头豹研究院发布《2022年中国数据库产品策略解析报告》
  18. 陪你云sdk用户指南
  19. 前端Vue中获取本机ip地址
  20. Proxmox VE(PVE)配置xterm.js终端

热门文章

  1. editplus编辑c语言,使用EditPlus编程软件学习C/C++编程
  2. jersey创建restful服务及调用_Jersey实现Restful服务(实例讲解)
  3. 概率论与数理统计思维导图
  4. IMX6Q获取序列号方法
  5. 智慧旅游系统总体设计方案
  6. 经典游戏扫雷详解--你也可以写出扫雷和玩好扫雷
  7. 嵌入式linux学习笔记(2)
  8. jieba分词工具的使用-python代码
  9. 算法精解:C语言描述
  10. C语言员工信息管理系统