package geotool;
import org.gdal.gdal.gdal;
import org.gdal.ogr.*;
import org.gdal.osr.SpatialReference;
import java.util.HashMap;
import java.util.Map;
/**
* 类描述 <p>
* @since 2019/10/8 15:58
*/
public class OgrGeoJson {
public static void main(String[] args) {
//指定文件的名字和路径
String strVectorFile ="E:\\fibercable.geojson";
// 注册所有的驱动
ogr.RegisterAll();
//配置GDAL_DATA路径(gdal根目录下的bin\gdal-data)
gdal.SetConfigOption("GDAL_DATA","E:\\software\\release-1900-x64-gdal-2-4-2-mapserver-7-4-0\\bin\\gdal-data");
// 为了支持中文路径,请添加下面这句代码
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");
// 为了使属性表字段支持中文,请添加下面这句
gdal.SetConfigOption("SHAPE_ENCODING","CP936");
//读取数据,这里以ESRI的shp文件为例
String strDriverName = "GeoJSON";
//创建一个文件,根据strDriverName扩展名自动判断驱动类型
Driver oDriver =ogr.GetDriverByName(strDriverName);
if (oDriver == null) {
System.out.println(strDriverName+ " 驱动不可用!\n");
return;
}
DataSource dataSource = oDriver.Open(strVectorFile);
Layer layer = dataSource.GetLayer(0);
String layerName = layer.GetName();
System.out.println("图层名称:"+layerName);
SpatialReference spatialReference = layer.GetSpatialRef();
System.out.println(spatialReference);
System.out.println("空间参考坐标系:"+spatialReference.GetAttrValue("AUTHORITY",0)+spatialReference.GetAttrValue("AUTHORITY",1));
double[] layerExtent = layer.GetExtent();
// System.out.println("图层范围:minx:"+layerExtent[0]+",maxx:"+layerExtent[1]+",miny:"+layerExtent[2]+",maxy:"+layerExtent[3]);
FeatureDefn featureDefn = layer.GetLayerDefn();
int fieldCount = featureDefn.GetFieldCount();
Map<String,Object> fieldMap = new HashMap<>();
for(int i=0; i<fieldCount; i++){
FieldDefn fieldDefn = featureDefn.GetFieldDefn(i);
//得到属性字段类型
int fieldType = fieldDefn.GetFieldType();
String fieldTypeName = fieldDefn.GetFieldTypeName(fieldType);
//得到属性字段名称
String fieldName = fieldDefn.GetName();
fieldMap.put(fieldTypeName,fieldName);
}
long featureCount = layer.GetFeatureCount();
System.out.println("图层要素个数:"+featureCount);
for(int i=0; i<featureCount; i++){
Feature feature = layer.GetFeature(i);
Object[] arr = fieldMap.values().toArray();
for(int k=0; k<arr.length; k++){
String fvalue = feature.GetFieldAsString(arr[k].toString());
System.out.print(" 属性名称:"+arr[k].toString()+",属性值:"+fvalue);
}
System.out.println();
}
}
}
ogr geojson
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。