当前位置: 首页 > news >正文

Geotools--生成等值线

好久没用geotools去写东西了,因为近几年一直在接触所谓数字孪生和可视化相关项目,个人的重心也往前端可视化去倾斜,在后端的开发上到变得停滞下来。

这次用的是geotools 28.4版本,生成等值线的方法在

	<dependency><groupId>org.geotools</groupId><artifactId>gt-process-feature</artifactId><version>28.4</version></dependency>

这是使用矢量点生成等值线,geotools中也提供了栅格影像生成等值线的方法,都是一个名字

ContourProcess,栅格的方法在:

	<dependency><groupId>org.geotools</groupId><artifactId>gt-process-raster</artifactId><version>${geotools.version}</version></dependency>

中,本文仅结束矢量点生成等值线方法:

全部代码如下:

import java.io.File;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;import org.geotools.data.DefaultTransaction;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.Transaction;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.shapefile.ShapefileDataStoreFactory;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.data.simple.SimpleFeatureStore;
import org.geotools.process.vector.ContourProcess;public class MainP {public static void main(String[] args) {//点shpSimpleFeatureCollection sf = getGeometries("D:\\tmp\\inPoints.shp");ContourProcess cp = new ContourProcess();double[] levels = new double[]{};//如果进行线平滑,可能出现线相交情况!,“zfirst”为点shp图层中描述高度的属性字段名称,这里设置20米间隔进行等高线划分SimpleFeatureCollection outSF = cp.execute(sf, "zfirst", levels, 20.0, false, false, null);buildShpByFeatureCollection(outSF,"D:\\tmp\\contour.shp");}public static SimpleFeatureCollection getGeometries(String shpFilePath) {try {FileDataStore store = FileDataStoreFinder.getDataStore(new File(shpFilePath));SimpleFeatureSource featureSource = store.getFeatureSource();SimpleFeatureCollection simpleFeatureCollection = featureSource.getFeatures();return simpleFeatureCollection;}catch(Exception ex) {System.out.println(ex.getMessage());}return null;}public static void buildShpByFeatureCollection(SimpleFeatureCollection collection, String outShpPath) {File outShpFile = new File(outShpPath);ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();try {Map<String, Serializable> params = new HashMap<>();params.put("url", outShpFile.toURI().toURL());params.put("create spatial index", Boolean.TRUE);ShapefileDataStore newDataStore = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);newDataStore.createSchema(collection.getSchema());Transaction transaction = new DefaultTransaction("create");String typeName = newDataStore.getTypeNames()[0];SimpleFeatureSource featureSource = newDataStore.getFeatureSource(typeName);if (featureSource instanceof SimpleFeatureStore) {SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;featureStore.setTransaction(transaction);try {featureStore.addFeatures(collection);transaction.commit();} catch (Exception problem) {problem.printStackTrace();transaction.rollback();} finally {transaction.close();}System.exit(0);} else {System.out.println(typeName + " does not support read/write access");System.exit(1);}} catch (Exception e) {throw new RuntimeException(e.getMessage(), e);}}}

相关文章:

  • 【微服务】安装docker以及可视化界面
  • R可视化:可直接发表的柱状图
  • 开源远程协助:分享屏幕,隔空协助!
  • maven聚合工程整合springboot+mybatisplus遇到的问题
  • 全球首个,985重大突破!
  • day42 62.不同路径 63. 不同路径 II
  • Jenkins 自动化部署
  • 微服务项目搭建之技术选型
  • JavaSE(入门)
  • AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.04.25-2024.05.01
  • 【C语言实现TCP通信】
  • linux文件编程api: creat
  • 服务案例|网络攻击事件的排查与修复
  • QLExpress入门及实战总结
  • 【Unity之FGUI】黑神章Fairy GUI控件详解
  • 【Leetcode】104. 二叉树的最大深度
  • conda常用的命令
  • CSS 三角实现
  • Fabric架构演变之路
  • github从入门到放弃(1)
  • Java 多线程编程之:notify 和 wait 用法
  • Java反射-动态类加载和重新加载
  • RxJS: 简单入门
  • SQL 难点解决:记录的引用
  • SwizzleMethod 黑魔法
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 笨办法学C 练习34:动态数组
  • 创建一个Struts2项目maven 方式
  • 回流、重绘及其优化
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 计算机在识别图像时“看到”了什么?
  • 记一次用 NodeJs 实现模拟登录的思路
  • 爬虫模拟登陆 SegmentFault
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何设计一个微型分布式架构?
  • 深度学习在携程攻略社区的应用
  • 问题之ssh中Host key verification failed的解决
  • 我这样减少了26.5M Java内存!
  • 写给高年级小学生看的《Bash 指南》
  • mysql面试题分组并合并列
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (2)(2.10) LTM telemetry
  • (2.2w字)前端单元测试之Jest详解篇
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (day6) 319. 灯泡开关
  • (pojstep1.1.2)2654(直叙式模拟)
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (分布式缓存)Redis持久化
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十三)Flask之特殊装饰器详解
  • (十一)c52学习之旅-动态数码管
  • (万字长文)Spring的核心知识尽揽其中
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据