平面投影坐标转经纬度坐标
平面投影坐标转经纬度坐标
本人在进行开发时,使用geotools的GeoTiffReader类读取卫星影像的顶点坐标,得到的是平面坐标,单位是米,打开arcGIS,加载影像,右下角会有坐标,在视图->数据框属性->常规->单位,可以更改坐标显示单位,一开始默认单位是米,我改成十进制度,如图:。
现想将平面坐标转化为经纬度,在网上看到一片博客:经纬度坐标和投影坐标的转换。参考该代码写类自己的,我的目的正好与博客写的相反。然后我就参考geotools-17的用户文档(
geotools/geotools-17.0-userguide/geotools-17.0/library/referencing/crs.html?highlight=transform)
现摘取部分文档():
程序主要靠这俩方法:CRS.findMathTransform()方法定义转换的坐标系,JTS.transform()进行坐标的转换。
package Test02;
import org.geotools.coverage.grid.GridCoverage2D;
import org.geotools.gce.geotiff.GeoTiffReader;
import org.geotools.geometry.jts.JTS;
import org.geotools.referencing.CRS;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.opengis.geometry.MismatchedDimensionException;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;public class CoordinateConversion02 {/*** 平面坐标转经纬度*/public static double[] convert(double x, double y,CoordinateReferenceSystem crs) throws FactoryException, MismatchedDimensionException, TransformException {Coordinate sourceCoord = new Coordinate(x, y);GeometryFactory geoFactory = new GeometryFactory();Point sourcePoint = geoFactory.createPoint(sourceCoord);MathTransform transform = CRS.findMathTransform(crs, DefaultGeographicCRS.WGS84, false);Point targetPoint = (Point) JTS.transform(sourcePoint, transform);double[] targetCoord = {targetPoint.getX(), targetPoint.getY()};return targetCoord;}/*** 测试*/public static void main( String[] args ) throws Exception{double x = -132202.486;double y = 1657014.274;//第一种获取方式,imageFile为卫星影像的文件地址,目的是获取影像的投影
// GeoTiffReader reader = new GeoTiffReader(imageFile);
// GridCoverage2D coverage = reader.read(null);
// //获取投影
// CoordinateReferenceSystem crs = coverage.getCoordinateReferenceSystem2D();//这是第二种获取方式(参考博文),final String wkt="PROJCS[\"unnamed\"," +"GEOGCS[\"WGS 84\"," + "DATUM[\"World Geodetic System 1984\", "+"SPHEROID[\"WGS 84\", 6378137.0, 298.257223563, AUTHORITY[\"EPSG\",\"7030\"]]," + "AUTHORITY[\"EPSG\",\"6326\"]], "+ "PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]]," + " UNIT[\"degree\", 0.017453292519943295], "+ "AXIS[\"Geodetic longitude\", EAST], "+" AXIS[\"Geodetic latitude\", NORTH], "+ "AUTHORITY[\"EPSG\",\"4326\"]], "+ " PROJECTION[\"Albers_Conic_Equal_Area\"], "+ "PARAMETER[\"central_meridian\", 110.0], "+ " PARAMETER[\"latitude_of_origin\", 12.0], "+" PARAMETER[\"standard_parallel_1\", 25.0], "+ "PARAMETER[\"false_easting\", 0.0], "+ "PARAMETER[\"false_northing\", 0.0]," + "PARAMETER[\"standard_parallel_2\", 47.0]," + "UNIT[\"m\", 1.0], "+ "AXIS[\"Easting\", EAST], "+ "AXIS[\"Northing\", NORTH]]";CoordinateReferenceSystem crs = CRS.parseWKT(wkt);double[] coordinate = convert(x, y,crs);System.out.println("X: " + coordinate[0] + ", Y: " + coordinate[1]);}
}
";
好了,一切完成,用arcGIS进行检验正确。代码还不完整,不断更新中。
更新(2018年1月1日):
当我把这个类移植到另一台电脑上并添加 gt-geotiff-17.0.jar后,恩,就添加了这一个jar包没报错,运行时报错:Exception in thread “main” java.lang.NoClassDefFoundError: javax/media/jai/I。个人觉得这是jar包不全所致,解决办法是先删除全部的import* 引用,然后一个一个的添加jar包,jar包源码在GitHub上有,有的方法名不止一个jar包,这个需特别注意。
本人原创,转载请附上本文连接。
欢迎技术交流。
平面投影坐标转经纬度坐标相关推荐
- 瓦片行列坐标转经纬度坐标
瓦片坐标说明: 列号x:对应经度 行号y:对应纬度 层级z:瓦片的等级(LV18/19/20) 两种转换函数: #这种转成正常的wgs84的经纬度坐标 def XYZToLonLat(x,y,z):n ...
- 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...
转自:https://www.cnblogs.com/fwc1994/p/5884115.html 火星坐标.百度坐标.WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版 火星坐标 ...
- 【转】火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...
原文地址:https://www.cnblogs.com/fwc1994/p/5884115.html 火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地 ...
- python实现2000投影坐标转经纬度
引言 常用的WGS84投影坐标转经纬度可用通用的pyproj库来转换,而2000坐标 测试用这个库是没法转换的 而WGS84和其它坐标系(gcj02.bd09)之间的转换可以通过ChangeCoord ...
- 墨卡托坐标以及 墨卡托坐标转经纬度
Google Maps.Virtual Earth等网络地理所使用的地图投影,常被称作Web Mercator或Spherical Mercator,它与常规墨卡托投影的主要区别就是把地球模拟为球体而 ...
- 墨卡托坐标以及墨卡托坐标转经纬度
Google Maps.Virtual Earth等网络地理所使用的地图投影,常被称作Web Mercator或Spherical Mercator,它与常规墨卡托投影的主要区别就是把地球模拟为球体而 ...
- CAD 坐标转经纬度(Arcgis)
CAD 坐标转经纬度(Arcgis) 1.CAD坐标识别 工具-坐标信息识别,手动复制输出到excel表,格式大致如下: 2.Arcgis 转换 文件-添加数据-添加XY数据,找到对应的excel表格 ...
- wgs84 投影坐标转经纬度 代码_ArcGis中已知经纬度坐标转任意坐标系(以点和80坐标系为讲解模板)...
一般经纬度都是以度分秒的格式显示的,如图31-1所示. 图31-1: 我们转至WGS-84坐标需要进行十进制的转化,也就是把度分秒换算为以度为单位的一串数字.操作步骤:打开excel>选中代表经 ...
- Arcpy平面坐标转经纬度坐标
反思 代码是实现目标的一种手段,但不是唯一手段,快速实现目标才是目的,不要因为手拿锤子(Arcpy)就满眼都是钉子.有时候更便捷的方式可能就在眼前. 奥卡姆剃刀定律:不要把事情人为地复杂化! 方法1 ...
最新文章
- Ka的递归编程练习 Part4|Hanoi汉诺塔,双色汉诺塔的也有
- zoj(2110)Tempter of the Bone(DFS+奇偶剪枝)
- select下拉框兼容写法
- Java集合:Hashtable源码分析
- snipaste滚动截图方法_百度终于良心一回,出了一款ios长截图神器!
- BZOJ 4706: B君的多边形 找规律
- ECSHOP2.7.3删除后台左侧菜单中的云服务中心
- 【leetcode】1053. Previous Permutation With One Swap
- 系统集成项目管理工程师考试题型
- Unicode汉字编码表
- 趋势Officescan的自动删除批处理脚本
- 熟练计算机数字键盘,电脑键盘盲打及快速输入技巧【一】
- 英语之---动名词做定语
- mysql文件用什么打开_sql文件用什么打开?
- DOS命令:comp
- banner设圆角_如何规范运营Banner设计?
- axios小记之基本用法
- delphi向控件发送消息,全选、复制、黏贴,sendmessage
- svn初步安装使用(详细教程图文操作)
- 一篇很值得看的伤感日志:因为你不喜欢我,所以你不明白