广州市外贸网站建设品牌,wordpress discuz整合,网站模板打包,wordpress 更改模块位置链接: gdal官网地址
gdal
gdal的一个用c语言编写的库#xff0c;用于处理地理信息相关的数据包括转换#xff0c;识别数据#xff0c;格式化数据以及解析
同时提供第三方语言的SDK包括python#xff0c;java上述需要编译后使用 java是需要使用jni接口调用实现方法在wind…链接: gdal官网地址
gdal
gdal的一个用c语言编写的库用于处理地理信息相关的数据包括转换识别数据格式化数据以及解析
同时提供第三方语言的SDK包括pythonjava上述需要编译后使用 java是需要使用jni接口调用实现方法在window平台是DLL文件在linux平台是so文件最后需要使用和初始化服务。
windows环境
链接: gdal Download 1第一种简单粗暴的方式就是把gdal包bin目录下所有的dll文件和bin\gdal\java下的dll文件丢到你的JDK的bin目录下对应的jar包也许在\bin\gdal\java目录下。
链接: windows Springboot 集成GDAL开发环境配置
1.将解压后的GDAL压缩包bin文件夹下的所有dll文件拷贝到自己电脑的jdk安装目录下的bin文件夹中我的电脑是C:\jdk\bin如果有冲突文件可以跳过。 注意是jdk下bin文件夹不是jre下的bin。 2.将压缩包解压后的bin\gdal\java\gdalalljni.dll文件同样到jdk下的bin文件夹中
2第二种是自己新建一个文件夹把需要的dll文件全放在一起然后自己配环境变量总之让系统能找到你的库就行了。 Path 添加
Linux和docker环境
链接: OSGeo/gdal github地址
在Linux上gdal官网上没有编译好的包要自己去下gdal的源码包然后自己编译后面会生成.so文件和jar包和windows一样可以配置环境变量或者把so文件丢到jdk的bin目录下。 -- 拉取镜像
docker pull osgeo/gdal:latest-- 以本机的网络模式运行 内部的端口则可以直接访问了
docker run -it --rm -v /home/gadl/tmp/sll:/tmp/sll -d --networkhost osgeo/gdal:latest-- 查看GDAL库的版本。
gdalinfo --version-- 查看java的版本。
java -version-- 进入目录
docker exec -it 容器id /bin/bashcd /tmp/sll/-- 把jar复制进来
java -jar 启动 jar包 docker-compose启动 gdalservice:image: osgeo/gdal:latestcontainer_name: gdalservicevolumes:- ./gdalservice/data:/data- /opt/docker-project/gdalservice/data/geo-api-0.0.1-SNAPSHOT.jar:/app/geo-api-0.0.1-SNAPSHOT.jarenvironment:- SOME_ENV_VARvaluecommand: /bin/sh -c java -jar /app/geo-api-0.0.1-SNAPSHOT.jarports:- 9003:9003
测试代码
链接: 官方gdal的java调用API
写个springboot项目接口 打包上去测试即可
引入依赖
!-- https://mvnrepository.com/artifact/org.gdal/gdal --dependencygroupIdorg.gdal/groupIdartifactIdgdal/artifactIdversion3.7.0/version/dependency public static void main(String[] args) {// 指定文件的名字和路径String gdbFile D:\\test\\MyProject12.gdb;// 注册所有的驱动ogr.RegisterAll();// 为了支持中文路径请添加下面这句代码gdal.SetConfigOption(GDAL_FILENAME_IS_UTF8, YES);// 为了使属性表字段支持中文请添加下面这句gdal.SetConfigOption(SHAPE_ENCODING, CP936);//打开文件获取数据集Dataset dataset gdal.OpenEx(gdbFile);if (dataset null) {System.out.println(打开gdbFile失败gdal.GetLastErrorMsg());System.exit(1);}Group group dataset.GetRootGroup();VectorString vector1 group.GetGroupNames();System.out.println(vector1);for (String name : vector1) {Group group1 group.OpenGroup(name);VectorString vector group1.GetVectorLayerNames();for (String o : vector) {Layer layer group1.OpenVectorLayer(o);System.out.println(layer.GetName());}}Vector vector2 group.GetVectorLayerNames(vector1);System.out.println(vector2);// 读取数据这里以gdb文件为例// 程序提供对ArcGIS 9及以上版本创建的文件geodatabase.gdb目录的矢量层的读取访问。数据集名称必须是目录/文件夹名称并且必须以.gdb扩展名结尾。它还可以直接读取zipped.gdb目录扩展名为.gdb.zip前提是它们在第一级包含一个.gdb目录。也可以直接打开特定的.gdbtable文件包括“system”表。几何图形中的曲线由GDAL2.2支持。String strDriverName OpenFileGDB;// 创建一个文件根据strDriverName扩展名自动判断驱动类型org.gdal.ogr.Driver oDriver ogr.GetDriverByName(strDriverName);if (oDriver null) {System.out.println(strDriverName 驱动不可用\n);return;}DataSource dataSource oDriver.Open(gdbFile, 0);for (int i 0; i dataSource.GetLayerCount(); i) {Layer layerIdx dataSource.GetLayer(i);System.out.println(图层名称 要素类 layerIdx.GetName());}Layer layer dataSource.GetLayer(test);SpatialReference spatialReference layer.GetSpatialRef();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();MapString, String fieldMap new HashMapString, String();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);}//System.out.println(fieldMap);long featureCount layer.GetFeatureCount();System.out.println(图层要素个数 featureCount);Feature feature2 null;while ((feature2 layer.GetNextFeature()) ! null) {// System.out.println(feature2.GetGeometryRef().ExportToJson());//System.out.println(feature2.GetFieldAsString(Shape_Area) \t feature2.GetFieldAsString(省区));}oDriver.delete();gdal.GDALDestroyDriverManager();} 参考链接
链接: Linux下安装GDAL含docker部分
链接: Java调用开源GDAL解析dxf成shp再调用开源GeoTools解析shp文件
链接: Ubuntu基于Docker快速配置GDAL的Python、C环境
链接: docker pull osgeo/gdal:latest
链接: linux机器搭建java版gdal环境
链接: gdal容器化记录
链接: 【Linux】CentOS制作JavaGDAL环境镜像并部署运行SpringBoot项目