這兩天在做一個(gè)系統(tǒng)的后臺(tái),需要用到GeoTools做后端空間分析,記錄一下自己遇到的問(wèn)題。
項(xiàng)目通過(guò)Maven進(jìn)行構(gòu)建,參照文檔Maven Quickstart添加GeoTools依賴(lài)和遠(yuǎn)程倉(cāng)庫(kù)地址。
<dependencies>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-swing</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>${geotools.version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net repository</name>
<url>http://download.java.net/maven/2</url>
</repository>
<repository>
<id>osgeo</id>
<name>Open Source Geospatial Foundation Repository</name>
<url>http://download.osgeo.org/webdav/geotools/</url>
</repository>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>boundless</id>
<name>Boundless Maven Repository</name>
<url>http://repo.boundlessgeo.com/main</url>
</repository>
</repositories>
但是我的maven沒(méi)有把依賴(lài)下載成功,于是我就用笨辦法,將GeoTools對(duì)應(yīng)的編譯版本下載下來(lái),并利用《填坑:IDEA導(dǎo)入Maven工程無(wú)法下載依賴(lài)項(xiàng)》方法,將依賴(lài)的jar包注冊(cè)到本地倉(cāng)庫(kù)中。問(wèn)題就隨之而來(lái)了。
在引用到GeoTools類(lèi)庫(kù)中,定義坐標(biāo)系,并建立坐標(biāo)系轉(zhuǎn)換關(guān)系時(shí),報(bào)錯(cuò)!
CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:4326");
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:3785");
MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS);
對(duì)比參考文檔CRS Lab Application,并沒(méi)發(fā)現(xiàn)什么不同。但從報(bào)錯(cuò)結(jié)果看,是定義的EPSG坐標(biāo)系無(wú)法實(shí)例化,折騰再三,將geotools文件夾放入src目錄下,然后再項(xiàng)目classpath目錄下引用對(duì)應(yīng)的jar包,這樣能夠運(yùn)行起來(lái),但是將項(xiàng)目打包后卻仍然報(bào)錯(cuò)。
最終,發(fā)現(xiàn)引入以上三個(gè)GeoTools庫(kù)的依賴(lài)關(guān)系時(shí),它會(huì)自動(dòng)構(gòu)建和其他包的依賴(lài)并將這些依賴(lài)包含在它的次層級(jí)內(nèi),如圖所示

從本地倉(cāng)庫(kù)中,也可以看出這種依賴(lài)關(guān)系

最后還是翻墻,老老實(shí)實(shí)將依賴(lài)下載下來(lái)。
如果你配置了阿里的鏡像,可以在自己的maven配置文件修改一下,直接從GeoTools的遠(yuǎn)程庫(kù)中下載。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>*,!osgeo,!maven2-repository.dev.java.net,!boundless</mirrorOf>
</mirror>