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

GIS:生成Shp文件

  /*** 生成shape文件** @param shpPath 生成shape文件路径(包含文件名称)* @param encode  编码* @param geoType 图幅类型,Point和Rolygon* @param geoms   图幅集合*/public static void write2Shape(String shpPath, String encode, String geoType, List<Geometry> geoms) {try {//创建shape文件对象File file = new File(shpPath);Map<String, Serializable> params = new HashMap<>();params.put(ShapefileDataStoreFactory.URLP.key, file.toURI().toURL());ShapefileDataStore ds = (ShapefileDataStore) new ShapefileDataStoreFactory().createNewDataStore(params);//定义图形信息和属性信息SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder();tb.setCRS(DefaultGeographicCRS.WGS84);tb.setName("shapefile");if ("Polygon".equals(geoType)) {tb.add("the_geom", Polygon.class);} else if ("MultiPolygon".equals(geoType)) {tb.add("the_geom", MultiPolygon.class);} else if ("Point".equals(geoType)) {tb.add("the_geom", Point.class);} else if ("MultiPoint".equals(geoType)) {tb.add("the_geom", MultiPoint.class);} else if ("LineString".equals(geoType)) {tb.add("the_geom", LineString.class);} else if ("MultiLineString".equals(geoType)) {tb.add("the_geom", MultiLineString.class);} else {throw new Exception("Geometry中没有该类型:" + geoType);}ds.createSchema(tb.buildFeatureType());//设置编码ds.setCharset(Charset.forName(encode));//设置WriterFeatureWriter<SimpleFeatureType, SimpleFeature> writer = ds.getFeatureWriter(ds.getTypeNames()[0], Transaction.AUTO_COMMIT);for (Geometry geom : geoms) {SimpleFeature feature = writer.next();feature.setAttribute("the_geom", geom);}writer.write();writer.close();ds.dispose();} catch (Exception e) {e.printStackTrace();}}
 public static void main(String[] args) throws Exception {List<String> list = new ArrayList<>();list.add("POLYGON ((116.21278950384274 39.90557982319698, 116.21177234433465 39.90610963061354, 116.21106912279264 39.90264172209895, 116.21399502548638 39.902612822554126, 116.21629305278306 39.905011479365406, 116.21278950384274 39.90557982319698))");list.add("POLYGON((113.38185597038 34.54828048706,113.38224220848 34.548355588913,113.38249970055 34.548108825684,113.38237095451 34.54787279129,113.38208127594 34.547786960602,113.38185597038 34.54828048706))");List<Geometry> geometryList = new ArrayList<>();for (String str : list) {Geometry geom = wktToGeom(str);geometryList.add(geom);}String url = "F://tmp//ceshi2222.shp";ShapeUtil.write2Shape(url, "utf-8", "Polygon", geometryList);}

说几个重要的类:
**DataStore:**访问和存储矢量格式空间数据的引擎,对应关系数据库中database的概念,可以用来更新 ,删除,获取SimpleFeatureType(类比数据库中一张具体表)
**FeatureSource:**与DataStore相比,粒度更细,内部操作都是针对这张表的。
**FeatureStore:**子接口,对数据本身进行设置。
**SimpleFeature:**类比数据库中一条记录,与SimpleFeatureType进行了绑定。
**SimpleFeatureType:**对SimpleFeature进行数据结构约束,类比关系数据库的表结构。
**FeatureCollection:**存储Feature对象的集合类,注意两点:1.其迭代器使用完毕必须显示关闭,2.存储在同一个FeatureCollection中的对象具有相同的SimpleFeatureType。

相关文章:

GIS:生成Shp文件

/*** 生成shape文件** param shpPath 生成shape文件路径&#xff08;包含文件名称&#xff09;* param encode 编码* param geoType 图幅类型&#xff0c;Point和Rolygon* param geoms 图幅集合*/public static void write2Shape(String shpPath, String encode, String geo…...

【日常笔记】使用Server过程中可能遇到的一些问题

使用Server过程中可能遇到的一些问题 1. 如何查找GPU型号与驱动版本之间的关系&#xff1f;2. 如何查看当前Server的内核版本&#xff1f;3. 使用Nvidia过程中可能用到的命令4. 对Jupyter Notebook的一些配置5. TensorFlow的一般操作6. 使用PyTorch的一些操作7. 修改安装源为国…...

【Mysql】给查询记录增加序列号方法

在MySQL 8.0版本中&#xff0c;你可以使用ROW_NUMBER()函数来添加序号。以下是一个示例查询&#xff0c;演示如何添加序号&#xff1a; SELECT ROW_NUMBER() OVER (ORDER BY column_name) AS serial_number,column1, column2, ... FROMyour_table;请将column_name替换为你想要…...

Linux 安装elasticsearch-7.5.1

相关链接 官⽹&#xff1a; https://www.elastic.co/cn/downloads/elasticsearch 下载&#xff1a; wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz 分词器&#xff1a; https://github.com/medcl/elasticsearch-an…...

ElementUI浅尝辄止26:Notification 通知

悬浮出现在页面角落&#xff0c;显示全局的通知提醒消息。 1.如何使用&#xff1f; 适用性广泛的通知栏 //Notification 组件提供通知功能&#xff0c;Element 注册了$notify方法&#xff0c;接收一个options字面量参数&#xff0c;在最简单的情况下&#xff0c;你可以设置tit…...

IDEA新建的Moudle失效显示为灰色

现象&#xff1a;IDEA新建的Moudle失效显示为灰色&#xff01;&#xff01;&#xff01; 解决方案&#xff1a; 1. 右键点击父模块&#xff0c;选择Open Moudle Settings&#xff1a; 2. 点击加号&#xff0c;选择Import Moudle - 导入模块&#xff1a; 3. 找到对应模块的po…...

Protobuf的简单使用

一.protobuf是什么&#xff1f; Protobuf&#xff0c;全称为Protocol Buffers&#xff08;协议缓冲区&#xff09;&#xff0c;是一种轻量级的数据序列化格式。它由Google开发&#xff0c;用于高效地存储和传输结构化数据。 与其他常见的数据序列化格式&#xff08;如XML和JS…...

OpenCV 12(图像直方图)

一、图像直方图 直方图可以让你了解总体的图像像素强度分布&#xff0c;其X轴为像素值&#xff08;一般范围为0~255&#xff09;&#xff0c;在Y轴上为图像中具有该像素值像素数。 - 横坐标: 图像中各个像素点的灰度级. - 纵坐标: 具有该灰度级的像素个数. 画出上图的直方图: …...

LeetCode 面试题 03.06. 动物收容所

文章目录 一、题目二、C# 题解 一、题目 动物收容所。有家动物收容所只收容狗与猫&#xff0c;且严格遵守“先进先出”的原则。在收养该收容所的动物时&#xff0c;收养人只能收养所有动物中“最老”&#xff08;由其进入收容所的时间长短而定&#xff09;的动物&#xff0c;或…...

快速理解DDD领域驱动设计架构思想-基础篇 | 京东物流技术团队

1 前言 本文与大家一起学习并介绍领域驱动设计(Domain Drive Design) 简称DDD&#xff0c;以及为什么我们需要领域驱动设计&#xff0c;它有哪些优缺点&#xff0c;尽量用一些通俗易懂文字来描述讲解领域驱动设计&#xff0c;本篇并不会从深层大论述讲解落地实现&#xff0c;这…...

C++学习笔记(堆栈、指针、命名空间、编译步骤)

C 1、堆和栈2、指针2.1、指针的本质2.2、指针的意义2.3、清空指针2.4、C类中的this 3、malloc and new4、命名空间4.1、创建命名空间4.2、使用命名空间 5、编译程序的四个步骤5.1、预处理5.2、编译5.3、汇编5.4、链接 1、堆和栈 堆&#xff08;heap&#xff09;和栈&#xff0…...

Rust Yew应用开发的事件初探

在Rust的世界中有一个叫Yew的框架&#xff0c;它借鉴了React的思想。我的React代码也写了不少&#xff0c;今天就聊一下我个人对Yew应用开发中事件相关部分的体验。 我的也是才开始学习Rust和Yew&#xff0c;说得不对的地方还请大家多多指教。 下面的例子涉及到3个组件 Paren…...

高并发下单例线程安全

1.使用静态内置类实现单例模式 自定义线程池 2.使用static代码块实现单例 3.使用静态内置类实现单例模式 4.使用static代码块实现单例 public class MySingleton {//使用volatile关键字保其可见性volatile private static MySingleton instance null;private MySingleton…...

【EKF】EKF原理

原理简述 卡尔曼滤波可以在线性模型&#xff0c;误差为高斯模型的情况下&#xff0c;对目标状态得出很好的估计效果&#xff0c;但如果系统存在非线性的因素&#xff0c;其效果就没有那么好了。比较典型的非线性函数关系包括平方关系&#xff0c;对数关系&#xff0c;指数关系…...

蓝桥杯官网填空题(古堡算式)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 福尔摩斯到某古堡探险&#xff0c;看到门上写着一个奇怪的算式&#xff1a;ABCDE ∗ ?EDCBA 他对华生说&#xff1a;“ABCDE 应该代表不同的数字&#xff0c;问号…...

Python---集合set

集合特点 1. 可以容纳多个数据 2. 可以容纳不同类型的数据 3.数据是无序存储的&#xff08;不支持下标索引&#xff09; 4. 不允许重复数据存在 5. 可以修改 6. 支持for循环&#xff0c;不支持while循环 集合定义 # 定义集合 变量 {元素1, 元素2, 元素3, 元素4...}# 定…...

LORA项目源码解读

大模型fineturn技术中类似于核武器的LORA&#xff0c;简单而又高效。其理论基础为&#xff1a;在将通用大模型迁移到具体专业领域时&#xff0c;仅需要对其高维参数的低秩子空间进行更新。基于该朴素的逻辑&#xff0c;LORA降低大模型的fineturn门槛&#xff0c;模型训练时不需…...

Azure + React + ASP.NET Core 项目笔记一:项目环境搭建(一)

不重要的目录标题 前提条件第一步&#xff1a;新建文件夹第二步&#xff1a;使用VS/ VS code/cmd 打开该文件夹第三步&#xff1a;安装依赖第四步&#xff1a;试运行react第五步&#xff1a;整理项目结构 前提条件 安装dotnet core sdk 安装Node.js npm 第一步&#xff1a;新…...

html 学习 之 文本标签

下面是一些常见的HTML文本标签&#xff08;&#xff0c;&#xff0c;&#xff0c;&#xff0c;和&#xff09;以及它们的作用&#xff1a; 标签 (Emphasis - 强调): 作用&#xff1a;用于在文本中表示强调或重要性。 示例&#xff1a; <p>这是一段文本&#xff0c;&l…...

联发科3纳米芯片预计2024年量产,此前称仍未获批给华为供货

9月7日&#xff0c;联发科与台积电共同宣布&#xff0c;联发科首款采用台积电3纳米制程生产的天玑旗舰芯片开发进度顺利&#xff0c;已成功流片&#xff0c;预计将在2024年量产&#xff0c;并将于下半年正式上市。这款旗舰芯片并非今年上市的天玑9300。 据联发科总经理陈冠州介…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...