<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
GeoTools 是一個開源的 Java GIS 工具包,可利用它來開發符合標準的地理資訊系統。GeoTools 提供了 OGC (Open Geospatial Consortium) 規範的一個實現來作為他們的開發。
GeoTools 被許多專案使用,包括 Web 服務,命令列工具和桌面應用程式。
核心功能
1.定義關鍵空間概念和資料結構的介面
2.乾淨的資料存取 API,支援功能存取,事務支援和執行緒之間的鎖定
4.無狀態的低記憶體渲染器,在伺服器端環境中特別有用。
5.使用 XML 模式繫結到 GML 內容的強大模式輔助解析技術
解析 / 編碼技術提供了許多 OGC 標準的繫結,包括 GML,Filter,KML,SLD 和 SE。
6.GeoTools 外掛:開放式外掛系統,可讓您教授庫其他格式
用於 ImageIO-EXT 專案的外掛,允許 GeoTools 從 GDAL 讀取其他柵格格式
7.GeoTools 擴充套件
提供使用核心庫的空間設施構建的其他功能。
擴充套件提供圖形和網路支援(用於查詢最短路徑),驗證,Web 地圖伺服器使用者端,用於 XML 解析和編碼的繫結以及顏色調變器!
8.不支援 GeoTools
GeoTools 也是更廣泛的社群的一部分,其工作區用於培養新人才和促進實驗。
一些重點包括搖擺支援(在我們的教學中使用!),SWT,本地和 Web 流程支援,附加符號,附加資料格式,網格的生成以及 ISO Geometry 的一些實現。
我們將首先定義我們希望使用的 GeoTools 的版本號。本工作手冊是為 28-SNAPSHOT 編寫的,儘管您可能希望嘗試不同的版本。
對於生產, geotools.version應該使用 28 的穩定版本:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <geotools.version>28-SNAPSHOT</geotools.version> <maven.deploy.skip>true</maven.deploy.skip> </properties>
我們指定以下依賴項(您的應用程式需要的 GeoTools 模組):
<dependency> <groupId>org.geotools</groupId> <artifactId>gt-main</artifactId> <version>${geotools.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-epsg-hsql</artifactId> <version>${geotools.version}</version> </dependency>
我們告訴 maven 從哪些儲存庫下載 jars:
<repositories> <repository> <id>osgeo</id> <name>OSGeo Release Repository</name> <url>https://repo.osgeo.org/repository/release/</url> <snapshots><enabled>false</enabled></snapshots> <releases><enabled>true</enabled></releases> </repository> <repository> <id>osgeo-snapshot</id> <name>OSGeo Snapshot Repository</name> <url>https://repo.osgeo.org/repository/snapshot/</url> <snapshots><enabled>true</enabled></snapshots> <releases><enabled>false</enabled></releases> </repository> </repositories>
import lombok.extern.slf4j.Slf4j; import org.geotools.geometry.jts.JTS; import org.geotools.referencing.CRS; import org.locationtech.jts.geom.Coordinate; import org.opengis.referencing.FactoryException; import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.TransformException; import java.math.BigDecimal; @Slf4j public class GisUtil { public static void main(String[] args) throws FactoryException, TransformException { bjz54ToCgcs2000( 39440999.301,3631381.649); // bjz54ToCgcs2000( 39446227.146,3626791.679); } /** * @param x 源座標x * @param y 源座標y * @Description: 座標系轉換-北京54投影轉國家2000投影 */ public static Coordinate bjz54ToCgcs2000(double x ,double y){ Coordinate tgtCoordinate= coordinateTransform(2415,4527, y, x); double tx=new BigDecimal(tgtCoordinate.x).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); double ty=new BigDecimal(tgtCoordinate.y).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); log.info(ty+","+tx); tgtCoordinate.setX(ty); tgtCoordinate.setY(tx); return tgtCoordinate; } public static Coordinate bjz54ToCgcs2000(Coordinate p){ return bjz54ToCgcs2000(p.x, p.y); } /** * @param srcNo 源座標系EPSG代號 * @param targetNo 目標座標系EPSG代號 * @param x 源座標x * @param y 源座標y * @Description: 座標系轉換 */ public static Coordinate coordinateTransform(int srcNo, int targetNo, double x , double y){ Coordinate tar=new Coordinate(); try { CoordinateReferenceSystem src = CRS.decode("EPSG:"+srcNo); CoordinateReferenceSystem target = CRS.decode("EPSG:"+targetNo); MathTransform transform = CRS.findMathTransform(src, target, true); Coordinate sour= new Coordinate(x, y); return JTS.transform(sour, tar, transform); } catch (FactoryException | TransformException e) { log.error(e.getMessage()); } return tar; } }
注:計算結果和測量軟體的結果有2米的誤差,用org.locationtech.proj4j工具包 計算的結果誤差更大,有幾十米。後續突出用pgis轉換的辦法誤差在1毫米之間。
@ApiOperation(value = "座標系轉換北京54-國家2000") @GetMapping(value = "/bjz54ToCgcs2000") public ResponseDTO<Coordinate> bjz54ToCgcs2000(@RequestBody Coordinate dto){ return ResponseDTO.succData(GisUtil.bjz54ToCgcs2000(dto)); }
到此這篇關於Java利用Geotools實現不同座標系之間座標轉換的文章就介紹到這了,更多相關Java Geotools座標轉換內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45