創建maven工程,加載gt-shapefile依賴包。注意,倉庫應該放在依賴後面才能把包都加載完。
1. pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>untitled</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<geotools.version>23-SNAPSHOT</geotools.version>
</properties>
<dependencies>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</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>
</project>
2. 創建獲取shp要素信息Java文件
package cn.com.geotool;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.data.simple.SimpleFeatureSource;
import org.opengis.feature.GeometryAttribute;
import org.opengis.feature.Property;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.type.GeometryType;
import org.opengis.feature.type.Name;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
/**
* @ClassName GetShpMsg
* @Author FengMinhui
* @Date 2020/4/23
* @Description TODO
* @Version 1.0
*/
public class GetShpMsg {
public static void main(String[] args) throws IOException {
String pathName = "D:\\GeoToolsTestData\\locations.shp";
File file = new File(pathName);
// 讀取到數據存儲中
FileDataStore dataStore = FileDataStoreFinder.getDataStore(file);
// 獲取特徵資源
SimpleFeatureSource simpleFeatureSource = dataStore.getFeatureSource();
// 要素集合
SimpleFeatureCollection simpleFeatureCollection = simpleFeatureSource.getFeatures();
// 要素數量
int featureSize = simpleFeatureCollection.size();
// 獲取要素迭代器
SimpleFeatureIterator featureIterator = simpleFeatureCollection.features();
if(featureIterator.hasNext()){
// 要素對象
SimpleFeature feature = featureIterator.next();
// 要素屬性信息,名稱,值,類型
List<Property> propertyList = (List<Property>) feature.getValue();
for(Property property : propertyList){
System.out.println("屬性名稱:" + property.getName());
System.out.println("屬性值:" + property.getValue());
System.out.println("屬性類型:" + property.getType());
System.out.println();
}
// 要素屬性信息
List<Object> featureAttributes = feature.getAttributes();
// 要素geometry的類型和座標,如點,線,面及其組成的座標
Object geometryText = feature.getDefaultGeometry();
// geometry屬性
GeometryAttribute geometryAttribute = feature.getDefaultGeometryProperty();
// 獲取座標參考系信息
CoordinateReferenceSystem coordinateReferenceSystem = geometryAttribute.getDescriptor().getCoordinateReferenceSystem();
// geometry類型
GeometryType geometryType = geometryAttribute.getType();
// geometry類型名稱
Name name = geometryType.getName();
System.out.println("要素數量:"+ featureSize);
System.out.println("要素屬性:" + featureAttributes);
System.out.println("要素geometry位置信息:" + geometryText);
System.out.println("要素geometry類型名稱:" + name);
System.out.println("shp文件使用的座標參考系:\n" + coordinateReferenceSystem);
}
}
}
3.輸出結果
屬性名稱:the_geom
屬性值:POINT (11.116667 46.066667)
屬性類型:GeometryTypeImpl Point<Point>
屬性名稱:Name
屬性值:Trento
屬性類型:AttributeTypeImpl Name<String>
restrictions=[ length([.]) <= 15 ]
屬性名稱:number
屬性值:140
屬性類型:AttributeTypeImpl number<Integer>
restrictions=[ length([.]) <= 9 ]
要素數量:15
要素屬性:[POINT (11.116667 46.066667), Trento, 140]
要素geometry位置信息:POINT (11.116667 46.066667)
要素geometry類型名稱:Point
shp文件使用的座標參考系:
GEOGCS["WGS84(DD)",
DATUM["WGS84",
SPHEROID["WGS84", 6378137.0, 298.257223563]],
PRIMEM["Greenwich", 0.0],
UNIT["degree", 0.017453292519943295],
AXIS["Geodetic longitude", EAST],
AXIS["Geodetic latitude", NORTH]]
4. locations.shp文件截圖