是否有方法使用Java将(英国国家网格(10图形网格引用))转换为lat/long?
例如,我有一个558832.516608631,180065.50201851176,并且希望使用Java或JTS生成lat/long。
我见过使用Javacript的问题/解决方案,但没有单独使用Java的解决方案。
我使用JTS尝试过这样的方法:
Coordinate c = new Coordinate(394028.93262359675,806122.3097467106);
com.vividsolutions.jts.geom.Point p = gf.createPoint(c);
CoordinateReferenceSystem utmCrs = CRS.decode("EPSG:3785");
MathTransform mathTransform = CRS.findMathTransform(utmCrs, DefaultGeographicCRS.WGS84, false);
com.vividsolutions.jts.geom.Point p1 = (com.vividsolutions.jts.geom.Point) JTS.transform(p, mathTransform);
System.out.println(p1.getCoordinate());但是坐标不能转换为lat/long,我可以在google地图中使用它。
谢谢。
http://www.movable-type.co.uk/scripts/latlong-os-gridref.html包含一个论坛来完成这个任务,但是我宁愿使用java。
下面是我要修复的GeoJson多边形:https://gist.githubusercontent.com/boundaries-io/089ca86fdc88b1065f5ee3dd12af684b/raw/e9f8b54ae17d835ad8560fcb81d693201235e386/example.geojson
试图使用:
CoordinateReferenceSystem utmCrs = CRS.decode("EPSG:7405");然而,
org.opengis.referencing.operation.OperationNotFoundException: No transformation available from system "CompoundCRS[OSGB 1936 / British National Grid + ODN height]" to "GeographicCRS[WGS84(DD)]".
at 最后的解决办法是使用:
CoordinateReferenceSystem utmCrs = CRS.decode("EPSG:27700");发布于 2017-10-11 15:45:06
除非我弄错了,否则英国国家电网是EPSG:27700。EPSG:3785是一个不受欢迎的墨卡托投影。
但是您也可以看看EPSG:7405,它被声明为OSGB1936/英国国家网格+ ODN高度。事实上,我认为您想要这个,因为您在评论中引用了SGB1936,EPSG:7405是OSGB 1936年,而EPSG:27700是OSBG36。
事实上,EPSG:27700可以在任何工具上毫无问题地使用,因为它不依赖于特定的高度网格。相反,EPSG:7405更准确,因为它明确地使用ODN高度数据.但需要将其加载到转换器工具中。它可以在一个真正的Proj4安装上完成(但解释它远远超出了我目前的知识范围),而且可能是用Java完成的,也可能不是用Java完成的。有关这方面的问题应该在地理信息系统上提出。但是,如果2米的精度是可以接受的,只需从EPSG:27700转换为EPSG:4326 (WGS84 Lon)。使用来自epsg.io的在线工具,您的示例点394028.93262359675,806122.3097467106在阿伯丁中心转换为lon=-2°6'1.122",lat=57°8'45.42“。
https://stackoverflow.com/questions/46690657
复制相似问题