国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java geotools庫代碼示例:使用Geotools庫來讀取和顯示Shapefile文件(GIS java常用庫示例)

這篇具有很好參考價值的文章主要介紹了java geotools庫代碼示例:使用Geotools庫來讀取和顯示Shapefile文件(GIS java常用庫示例)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

geotools庫介紹

Geotools是一個開源的Java庫,用于處理和分析地理空間數(shù)據(jù),并提供了一組工具和API,以便在Java應(yīng)用程序中使用地理空間數(shù)據(jù)。它是一個成熟的GIS庫,具有廣泛的功能和支持,可用于多種應(yīng)用場景,包括地圖制作、數(shù)據(jù)分析、空間查詢和可視化等。

以下是Geotools庫的一些主要特點:

  • 支持多種開放標(biāo)準(zhǔn):Geotools支持多種開放標(biāo)準(zhǔn),如OGC、ISO和OpenGIS等,使其可以與其他GIS和地理信息系統(tǒng)進(jìn)行交互。
  • 處理多種數(shù)據(jù)格式:Geotools可以處理多種數(shù)據(jù)格式,包括Shapefile、GeoJSON、KML、GML等。
  • 提供多種數(shù)據(jù)源:Geotools支持多種數(shù)據(jù)源,包括文件、數(shù)據(jù)庫、Web服務(wù)等。
  • 提供多種空間分析工具:Geotools提供了多種空間分析工具,如緩沖區(qū)分析、空間查詢、地理編碼、空間統(tǒng)計分析等。
  • 支持多種投影和坐標(biāo)系統(tǒng):Geotools支持多種投影和坐標(biāo)系統(tǒng),并提供了一些常見的投影和坐標(biāo)系統(tǒng)的定義。
  • 提供多種可視化工具:Geotools提供了多種可視化工具,如渲染器、符號化工具、標(biāo)注等,可以幫助用戶創(chuàng)建動態(tài)和交互式地圖。

總之,Geotools是一個強(qiáng)大的GIS庫,具有廣泛的功能和支持,可以用于多種地理空間數(shù)據(jù)處理和應(yīng)用場景。

geotools pom

以下是Geotools的POM文件配置示例,可以將其添加到您的Maven項目中以便使用Geotools庫:

<dependencies>
  <dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-shapefile</artifactId>
    <version>23.5</version>
  </dependency>
  <dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-swing</artifactId>
    <version>23.5</version>
  </dependency>
  <dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-epsg-hsql</artifactId>
    <version>23.5</version>
  </dependency>
  <dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-geojson</artifactId>
    <version>23.5</version>
  </dependency>
  <dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-referencing</artifactId>
    <version>23.5</version>
  </dependency>
  <dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-coverage</artifactId>
    <version>23.5</version>
  </dependency>
</dependencies>

這段POM文件中包含了Geotools的一些核心依賴項,包括:

  • gt-shapefile:用于讀取和寫入Shapefile文件的庫。
  • gt-swing:用于創(chuàng)建Swing應(yīng)用程序的庫,包括創(chuàng)建地圖框架和顯示地圖。
  • gt-epsg-hsql:用于提供EPSG投影和坐標(biāo)系統(tǒng)定義的庫。
  • gt-geojson:用于讀取和寫入GeoJSON文件的庫。
  • gt-referencing:用于處理坐標(biāo)參考系統(tǒng)和投影的庫。
  • gt-coverage:用于處理柵格覆蓋數(shù)據(jù)的庫。

您可以根據(jù)您的具體需求來選擇適當(dāng)?shù)囊蕾図棽⑻砑拥侥腜OM文件中。另外,您還需要確保在您的POM文件中添加了適當(dāng)?shù)膫}庫配置,以便從Maven中央倉庫下載Geotools庫。

maven倉庫配置

如果您在Maven項目中添加了Geotools的POM文件配置,并且遇到了類似"Could not find artifact org.geotools:gt-shapefile:pom:23.5 in central (https://repo.maven.apache.org/maven2)"的錯誤,可能是因為Maven無法從Maven中央倉庫中下載Geotools庫。

解決此問題的一種方法是將Geotools的倉庫配置添加到Maven的settings.xml文件中。在您的Maven安裝目錄下的conf文件夾中,可以找到settings.xml文件。將以下內(nèi)容添加到該文件中:

<settings>
  <profiles>
    <profile>
      <id>geotools</id>
      <repositories>
        <repository>
          <id>osgeo</id>
          <name>OSGeo Release Repository</name>
          <url>https://repo.osgeo.org/repository/release/</url>
        </repository>
      </repositories>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>geotools</activeProfile>
  </activeProfiles>
</settings>

這個配置將Geotools的倉庫添加為Maven的一個配置文件。然后,您可以重新運(yùn)行Maven命令來下載Geotools庫。

另外,您還可以嘗試通過在命令行中運(yùn)行以下命令來解決此問題:

mvn install:install-file -Dfile=[path/to/geotools.jar] -DgroupId=org.geotools -DartifactId=gt-shapefile -Dversion=23.5 -Dpackaging=jar

其中,[path/to/geotools.jar]應(yīng)替換為Geotools庫的實際路徑。這個命令將手動將Geotools庫添加到您的本地Maven倉庫中,以便您的Maven項目可以使用它。

完整代碼

import java.io.File;
import java.io.IOException;
import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFinder;
import org.geotools.data.FeatureSource;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.feature.FeatureIterator;
import org.geotools.geometry.jts.JTS;
import org.geotools.map.DefaultMapContext;
import org.geotools.map.MapContext;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.geometry.Geometry;
import org.opengis.referencing.crs.CoordinateReferenceSystem;

public class GISExample {

  public static void main(String[] args) throws IOException {
    // 讀取Shapefile文件
    File file = new File("path/to/shapefile.shp");
    Map<String, Object> map = new HashMap<>();
    map.put("url", file.toURI().toURL());
    DataStore dataStore = DataStoreFinder.getDataStore(map);
    String typeName = dataStore.getTypeNames()[0];
    FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = dataStore.getFeatureSource(typeName);
    SimpleFeatureCollection collection = featureSource.getFeatures();

    // 遍歷要素并顯示幾何形狀
    try (SimpleFeatureIterator iterator = collection.features()) {
      while (iterator.hasNext()) {
        SimpleFeature feature = iterator.next();
        Geometry geometry = (Geometry) feature.getDefaultGeometry();
        System.out.println(geometry.toString());
      }
    }

    // 顯示Shapefile圖層
    CoordinateReferenceSystem crs = featureSource.getSchema().getCoordinateReferenceSystem();
    Style style = SLD.createSimpleStyle(featureSource.getSchema());
    MapContext mapContext = new DefaultMapContext();
    mapContext.addLayer(featureSource, style);
    JMapFrame mapFrame = new JMapFrame(mapContext);
    mapFrame.enableToolBar(true);
    mapFrame.enableStatusBar(true);
    mapFrame.setVisible(true);
  }
}

代碼解釋

上述Java代碼演示了如何使用Geotools庫來讀取和顯示Shapefile文件。以下是代碼解釋:

首先,我們導(dǎo)入所需的Geotools庫和Java庫:

import java.io.File;
import java.io.IOException;
import org.geotools.data.DataStore;
import org.geotools.data.DataStoreFinder;
import org.geotools.data.FeatureSource;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.feature.FeatureIterator;
import org.geotools.geometry.jts.JTS;
import org.geotools.map.DefaultMapContext;
import org.geotools.map.MapContext;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.geometry.Geometry;
import org.opengis.referencing.crs.CoordinateReferenceSystem;

然后,我們定義一個名為GISExample的類,并在其中定義一個main方法:

public class GISExample {

  public static void main(String[] args) throws IOException {
    // code here
  }
}

接下來,我們讀取Shapefile文件:

File file = new File("path/to/shapefile.shp");
Map<String, Object> map = new HashMap<>();
map.put("url", file.toURI().toURL());
DataStore dataStore = DataStoreFinder.getDataStore(map);
String typeName = dataStore.getTypeNames()[0];
FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = dataStore.getFeatureSource(typeName);
SimpleFeatureCollection collection = featureSource.getFeatures();

在這段代碼中,我們首先定義一個File對象,代表Shapefile文件的路徑。然后,我們創(chuàng)建一個Map對象,并將Shapefile文件的URL存儲在其中。接下來,我們使用DataStoreFinder.getDataStore方法來獲取數(shù)據(jù)存儲對象,并使用getTypeNames()方法獲取第一個要素源的類型名稱。最后,我們使用getFeatureSource()方法獲取要素源,然后使用getFeatures()方法獲取要素集合。

接著,我們遍歷要素并顯示幾何形狀:

try (SimpleFeatureIterator iterator = collection.features()) {
  while (iterator.hasNext()) {
    SimpleFeature feature = iterator.next();
    Geometry geometry = (Geometry) feature.getDefaultGeometry();
    System.out.println(geometry.toString());
  }
}

在這段代碼中,我們使用SimpleFeatureIterator迭代要素集合,并使用getDefaultGeometry()方法獲取要素的默認(rèn)幾何形狀。然后,我們使用toString()方法打印幾何形狀的字符串表示。

最后,我們顯示Shapefile圖層:

CoordinateReferenceSystem crs = featureSource.getSchema().getCoordinateReferenceSystem();
Style style = SLD.createSimpleStyle(featureSource.getSchema());
MapContext mapContext = new DefaultMapContext();
mapContext.addLayer(featureSource, style);
JMapFrame mapFrame = new JMapFrame(mapContext);
mapFrame.enableToolBar(true);
mapFrame.enableStatusBar(true);
mapFrame.setVisible(true);

在這段代碼中,我們使用getCoordinateReferenceSystem()方法獲取坐標(biāo)參考系統(tǒng),并使用SLD.createSimpleStyle()方法創(chuàng)建一個簡單的樣式對象。然后,我們創(chuàng)建一個MapContext對象,并使用addLayer()方法將要素源和樣式添加到地圖上。接下來,我們創(chuàng)建一個JMapFrame對象,并使用enableToolBar()enableStatusBar()setVisible()方法來啟用工具欄、狀態(tài)欄并顯示地圖。文章來源地址http://www.zghlxwxcb.cn/news/detail-766323.html

到了這里,關(guān)于java geotools庫代碼示例:使用Geotools庫來讀取和顯示Shapefile文件(GIS java常用庫示例)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java:計算地球上兩個經(jīng)緯度坐標(biāo)之間的距離-geodesy和geotools實現(xiàn)

    兩個點的經(jīng)緯度 latitude緯度 longitude經(jīng)度 地點 22.678611 113.805695 深圳同泰萬怡酒店 22.716473 113.826391 深圳寶安中天美景華美達(dá)酒店 各種計算方式 計算方式 距離 Elasticsearch:7.12.1 4715.088099751495 自定義公式計算 4720.367727793572 org.gavaghan/geodesy 4715.085736444097 org.geotools/gt-referencing 4701.260

    2024年02月02日
    瀏覽(27)
  • Geotools處理shape文件

    shape文件結(jié)構(gòu) filename.shp: shapes filename.shx: 索引文件 filename.dbf: 結(jié)構(gòu)化數(shù)據(jù)文件 filename.qix: 空間索引文件 filename.fix: fid索引文件 filename.sld: 樣式文件 依賴 創(chuàng)建連接 連接參數(shù) Parameter required Description url true .shp文件的url namespace false FeatureType的URI create spatial index false 是否創(chuàng)建空間索

    2024年02月08日
    瀏覽(16)
  • Geotools對geojson的解析

    在 GeoTools 中,對 GeoJSON 的支持是通過一個插件來完成的,用戶同樣可以在 Maven 的 pom.xml 配置文件中添加下述的依賴。 有關(guān)插件導(dǎo)進(jìn)來以后,就可以根據(jù)相關(guān)的接口對Geojson進(jìn)行解析

    2024年02月09日
    瀏覽(24)
  • Geotools基本增刪改查Feature

    通過Geotools實現(xiàn)對Feature的增刪改查 postgis依賴 JDBCDataStore連接參數(shù) Parameter Description dbtype Must be the string postgis host Machine name or IP address to connect to port Port number to connect to, default 5432 schema The database schema to access database The database to connect to user User name passwd Password loose bbox Flag control

    2023年04月23日
    瀏覽(17)
  • Geotools-PG空間庫(Crud,屬性查詢,空間查詢)

    Geotools-PG空間庫(Crud,屬性查詢,空間查詢)

    建立連接 經(jīng)過測試,這套連接邏輯除了支持純PG以外,也支持人大金倉,凡是套殼PG的都可以嘗試一下。我這里的測試環(huán)境是Geosence創(chuàng)建的pg SDE,數(shù)據(jù)庫選用的是人大金倉。 查詢 查詢所有的表格 屬性查詢空間查詢通用 屬性篩選查詢 用數(shù)據(jù)庫查: 用代碼查: 空間篩選 如果不

    2024年01月21日
    瀏覽(17)
  • shp數(shù)據(jù)插入sde連接的PostgreSQL庫(一)----基于 IntelliJ IDE的GeoTools快速搭建環(huán)境

    shp數(shù)據(jù)插入sde連接的PostgreSQL庫(一)----基于 IntelliJ IDE的GeoTools快速搭建環(huán)境

    ? 早就聽聞大名鼎鼎的GeoTools,因為自己不搞Java,所以之前沒用過, ? 最近有個需求,一個白模系統(tǒng),具體是數(shù)據(jù)是用SDE導(dǎo)入到postgresql中,然后用arcgis server發(fā)布了矢量,最后用 arcgis api? for js 4.x拉伸,得到有高度的白模。以前的數(shù)據(jù)都是通過sde導(dǎo)入的,現(xiàn)在的需求是要通過

    2024年02月03日
    瀏覽(28)
  • java 逐行讀取文件(讀取文件每一行、按行讀取文件)附帶示例代碼

    最快的讀取每一行 相比較Scanner慢一點 行數(shù)達(dá)到一定規(guī)模,使用此方法讀取會非常慢 一次把所有數(shù)據(jù)都讀到內(nèi)存中,當(dāng)文件非常大時,會消耗掉內(nèi)存資源導(dǎo)致程序崩掉,文件規(guī)模小推薦使用 統(tǒng)計每一行日志ip出現(xiàn)的次數(shù)

    2024年02月11日
    瀏覽(55)
  • java 使用 CSVWriter 庫來導(dǎo)出 CSV 文件

    在 Java 中,可以使用 CSVWriter 庫來導(dǎo)出 CSV 文件。以下是使用 CSVWriter 庫導(dǎo)出 CSV 文件的基本步驟: 添加CSVWriter庫依賴: 在 pom.xml 文件中添加以下依賴: 寫入CSV數(shù)據(jù): 在代碼中,首先需要構(gòu)造要寫入CSV的數(shù)據(jù)結(jié)構(gòu),然后通過CSVWriter寫入CSV。 以下代碼示例演示如何將包含學(xué)生信

    2024年02月11日
    瀏覽(18)
  • Java21來了,趕緊用起來(附代碼使用示例)

    https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html 官方簡介: https://www.oracle.com/cn/java/ 官方更新內(nèi)容簡介:https://openjdk.org/projects/jdk/21/ 官方博客介紹:https://blogs.oracle.com/java/post/the-arrival-of-java-21 Java21 自發(fā)布日起,將會長期支持 8 年。(長期維護(hù)更新,修復(fù)bug) 相當(dāng)

    2024年02月02日
    瀏覽(24)
  • 使用Java Swing繪制字符串描邊的示例代碼

    使用Java Swing繪制字符串描邊的示例代碼

    我最近在工作的實際開發(fā)中,遇到了一個需求,給字符串描邊,無從那個下手,最終請教了代碼生成的AI工具,把這個需求實現(xiàn)了,在次記錄供大家參考,?我解決問題之后,覺得還是把這些坑都寫清楚,方便 大家少踩坑呢。 此代碼有該AI 助手為您帶來的,v信小程序:

    2024年02月16日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包