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

PostGIS学习教程十一:投影数据

PostGIS学习教程十一:投影数据

地球不是平的,也没有简单的方法把它放在一张平面纸地图上(或电脑屏幕上),所以人们想出了各种巧妙的解决方案(投影)。

每种投影方案都有优点和缺点,一些投影保留面积特征;一些投影保留角度特征,如墨卡托投影(Mercator);一些投影试图找到一个很好的中间混合状态,在几个参数上只有很小的失真。所有投影的共同之处在于,它们将(地球)转换为平面笛卡尔坐标系,选择哪种投影取决于你将如何使用数据(需要哪些数据特征,面积?角度?或者其他)。

我们在加载纽约数据时"邂逅"了投影。(回想一下令人讨厌的SRID 26918)。但是,有时需要在空间参考系统之间进行变换和重新投影。PostGIS包含更改数据投影(重投影)的功能,即使用ST_Transform(geometry, srid)函数就可以实现重投影。另外,为了查看和设置几何图形的空间参照标识符,PostGIS提供了ST_SRID(geometry)和ST_SetSRID(geometry,SRID)函数。

我们可以使用ST_SRID(geometry)函数确认数据的SRID:

SELECT ST_SRID(geom) FROM nyc_streets LIMIT 1;

在这里插入图片描述
“26918"的定义是什么?正如我们在加载纽约数据那一部分中看到的,该定义包含在spatial_ref_sys表中。事实上,有两个定义。“well-known text”(WKT)定义在srtext列中,"proj.4"格式定义在proj4text列。

SELECT * FROM spatial_ref_sys WHERE srid = 26918;

在这里插入图片描述
实际上,对于内部PostGIS投影的计算,依据的是proj4text列的内容。以下是26918投影对应的proj4text列的内容:

SELECT proj4text FROM spatial_ref_sys WHERE srid = 26918;

在这里插入图片描述
实际上,srtext和proj4text列都很重要:srtext列由GeoServer、uDig和FME等外部程序使用;proj4text列由PostGIS的内部程序使用。

文章目录

  • PostGIS学习教程十一:投影数据
  • 一、比较数据
  • 二、转换数据
  • 三、投影练习
    • 3.1、练习
  • 四、相关函数总结


一、比较数据

综合起来,坐标和SRID(严谨的说应该是空间参考系统)一起定义了地球上的一个位置。没有SRID,坐标只是一个抽象而没有实际意义的概念。“笛卡尔”坐标平面被定义为放置在地球表面的“平面”坐标系。由于PostGIS函数在这样的坐标系统上工作,因此关于两个几何图形的比较的操作都要基于同一SRID。

如果输入具有不同SRID的几何图形,则会得到错误:

SELECT ST_Equals(ST_GeomFromText('POINT(0 0)', 4326),ST_GeomFromText('POINT(0 0)', 26918));

在这里插入图片描述
注意:空间索引是基于存储的几何图形的SRID构建的。如果在不同的SRID中进行比较,则通常不使用空间索引。最佳做法是为数据库中的所有表选择一个SRID。仅在向外部程序读取或写入数据时使用转换函数将数据转换为基于指定SRID的数据

二、转换数据

如果查看SRID 26918的Proj4定义,我们可以看到投影是UTM(Universal Transverse Mercator) zone 18,度量单位为米。
让我们将一些数据从投影坐标转换为地理坐标(也称为"经度(longitude)/ 纬度(latitude)“)。
若要将数据从一种SRID转换为另一种SRID,必须首先验证几何图形是否具有有效的SRID。由于我们已经确认了当前数据中的SRID,所以接下来仅需要将投影坐标系统的SRID转换为地理坐标系统的SRID。
地理坐标最常见的SRID是4326(WGS84地理坐标系统),对应于"WGS84球体上的经度/纬度”,你可以在http://spatialreference.org站点上看到该定义:
你也可以从spatial_ref_sys表中查到该定义:

SELECT srtext FROM spatial_ref_sys WHERE srid = 4326;

在这里插入图片描述

让我们将"Broad St(宽街)"地铁站的坐标转换为地理坐标:

SELECT ST_AsText(ST_Transform(geom,4326))
FROM nyc_subway_stations
WHERE name = 'Broad St';

在这里插入图片描述
如果加载数据或创建新几何图形而未指定SRID,则SRID的值将为0。回想一下,在几何图形中,当我们创建几何表时,我们并没有指定SRID。如果我们查询数据库,则应该知道所有"nyc_表"的SRID值都为26918,而geometries表的SRID默认值为0。

若要查看表的SRID,请查询数据库的geometry_columns视图表:

SELECT f_table_name AS name, srid
FROM geometry_columns;

在这里插入图片描述
然而,如果你知道坐标的SRID是什么,则可以使用ST_SetSRID()对几何图形进行SRID设置。然后,你将能把几何图形的现有坐标系统转换为其他坐标系统。

SELECT ST_AsText(ST_Transform(ST_SetSRID(geom,26918),4326)
)
FROM geometries;

在这里插入图片描述

三、投影练习

下面是一些我们已经看过的函数,它们应该对练习有用!

在这里插入图片描述
请记住你可以使用的在线资源:

http://spatialreference.org
http://prj2epsg.org
还有请记住我们的数据库中现有的数据表:

nyc_census_blocks
name, popn_total, boroname, geom
nyc_streets
name, type, geom
nyc_subway_stations
name, geom
nyc_neighborhoods
name, boroname, geom

3.1、练习

①"基于UTM zone 18投影坐标系统的测量,纽约(New York)所有街道的长度是多少?"

SELECT Sum(ST_Length(geom))
FROM nyc_streets;

在这里插入图片描述
②"SRID 2831的WKT定义是什么?"

SELECT srtext FROM spatial_ref_sys
WHERE SRID = 2831;

或者通过查询prj2epsg

PROJCS["NAD83(HARN) / New York Long Island",GEOGCS["NAD83(HARN)",DATUM["NAD83 (High Accuracy Regional Network)",SPHEROID["GRS 1980", 6378137.0, 298.257222101,AUTHORITY["EPSG","7019"]],TOWGS84[-0.991, 1.9072, 0.5129, 0.0257899075194932, -0.009650098960270402, -0.011659943232342112, 0.0],AUTHORITY["EPSG","6152"]],PRIMEM["Greenwich", 0.0,AUTHORITY["EPSG","8901"]],UNIT["degree", 0.017453292519943295],AXIS["Geodetic longitude", EAST],AXIS["Geodetic latitude", NORTH],AUTHORITY["EPSG","4152"]],PROJECTION["Lambert Conic Conformal (2SP)",AUTHORITY["EPSG","9802"]],PARAMETER["central_meridian", -74.0],PARAMETER["latitude_of_origin", 40.166666666666664],PARAMETER["standard_parallel_1", 41.03333333333333],PARAMETER["false_easting", 300000.0],PARAMETER["false_northing", 0.0],PARAMETER["scale_factor", 1.0],PARAMETER["standard_parallel_2", 40.666666666666664],UNIT["m", 1.0],AXIS["Easting", EAST],AXIS["Northing", NORTH],AUTHORITY["EPSG","2831"]]

③"基于SRID 2831坐标系统,计算纽约市所有街道的长度是多少?"

SELECT Sum(ST_Length(ST_Transform(geom,2831)))
FROM nyc_streets;

在这里插入图片描述
注意:UTM 18与SRID 2831(the State Plane Long Island projection - 国家平面长岛投影)测量的差值为(10421993 - 10418904)/ 10418904 = 0.02%。利用地理法在地球球体上计算出的街道总长度为10421999,也就是说基于SRID 2831计算出来的结果和真实结果更接近。这并不奇怪,因为SRID 2831投影坐标系是精确地校准一个很小的区域(纽约市),而UTM 18必须为一个大的区域提供合理的结果。
④" ‘Broad St’ 地铁站点的KML表示是什么?"

SELECT ST_AsKML(geom)
FROM nyc_subway_stations
WHERE name = 'Broad St';

在这里插入图片描述
嘿!结果坐标是地理坐标,而不是投影坐标,然而我们并没有调用ST_Transform(),为什么?因为KML标准规定所有坐标都必须是地理坐标(实际上是EPSG: 4326),所以ST_AsKML()函数会自动进行坐标转换。

四、相关函数总结

ST_SRID(geometry) —— 查看空间数据的坐标系
ST_SetSRID(geometry,SRID) —— 设置空间数据的坐标系
UpdateGeometrySRID(table_name, column_name, srid) —— 更新空间数据表的坐标系
ST_Transform(geometry, srid) —— 转换空间数据的坐标系

相关文章:

PostGIS学习教程十一:投影数据

PostGIS学习教程十一:投影数据 地球不是平的,也没有简单的方法把它放在一张平面纸地图上(或电脑屏幕上),所以人们想出了各种巧妙的解决方案(投影)。 每种投影方案都有优点和缺点,一…...

jQuery ajax读取本地json文件 三级联动下拉框

步骤 1:创建本地JSON文件 {"departments": [{"name": "会计学院","code": "052"},{"name": "金融学院","code": "053"},{"name": "财税学院",&qu…...

Kubernetes(K8s 1.27.x) 快速上手+实践,无废话纯享版(视频笔记)

视频源:1.03-k8s是什么?_哔哩哔哩_bilibili 1 基础知识 1.1 K8s 有用么? K8s有没有用 K8s要不要学? 参考资料: https://www.infoq.com/articles/devops-and-cloud-trends-2022/?itm_sourcearticles_about_InfoQ-trends-report…...

深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图

大家好,我是微学AI,今天给大家介绍一下深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图。本文我将介绍自动驾驶技术及其应用场景,并重点阐述了基于计算机视觉技术下的自动驾驶。自动驾驶技术是一种利用人工智能和…...

Stable Diffusion 系列教程 - 1 基础准备(针对新手)

使用SD有两种方式: 本地: 显卡要求:硬件环境推荐NVIDIA的具有8G显存的独立显卡,这个显存勉勉强强能摸到门槛。再往下的4G可能面临各种炸显存、炼丹失败、无法生成图片等各种问题。对于8G显存,1.0模型就不行&#xff0…...

听GPT 讲Rust源代码--src/tools(8)

File: rust/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_match_arms.rs 在Rust源代码中,rust-analyzer是一个Rust编程语言的语言服务器。它提供了代码补全、代码重构和代码导航等功能来帮助开发者提高编码效率。 在rust-analyzer的代码目…...

Linux硬链接和软连接是什么?

在Linux操作系统中,文件管理是一个基本且重要的概念。其中,软链接(Symbolic Link)和硬链接(Hard Link)是文件系统中两种不同类型的链接方式,它们在文件管理和操作中扮演着重要的角色。软链接 软…...

LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能

LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…...

VS2015编译GDAL3.2.0+opencl+C#

参考借鉴https://www.cnblogs.com/litou/p/15004877.html 参考借鉴https://www.cnblogs.com/xiaowangba/p/6313903.html 参考借鉴gdal、proj、geos、sqlite等在VS2015下编译和配置_vs2015编译sqlite3-CSDN博客 参考借鉴Windows下GDAL3.1.2编译 (VS2015)_gdal windows编译-CS…...

3、Linux_系统用户管理

1.Linux 用户管理 1.1概述 Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。root用户是系统默认创建的管理员账号。 1.2添加用户 语法 useradd […...

C语言指针详解上

1 野指针 int main01(){//野指针就是没有初始化的指针,指针的指向是随机的,不可以 操作野指针//int a 0;//指针p保存的地址一定是定义过的(向系统申请过的)int *p;//野指针*p 200;printf("%d\n",*p);system("pause");return 0;}2 空指针 空指针的作用…...

力扣面试150题 | 27.移除元素

力扣面试150题 | 27.移除元素 题目描述解题思路代码实现复杂度分析 题目描述 27.移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必…...

JAVA 通过get,post访问远程接口

get请求 参数拼接在url ?namevalue&sexvalue // httpurlhttp:127.0.0.1/project public static String doGet(String httpurl){HttpURLConnection connection nul;Inputstream is null;BufferedReader br null;String result null;//返回结果字…...

Spark例子

Spark例子 以下是一个简单的AI Spark例子: 假设我们有一个数据集,包含房屋大小、卧室数量和售价。我们想使用Spark来预测房屋售价。 首先,我们需要导入所需的库和数据。在这个例子中,我们将使用Pyspark。 python from pyspark…...

linux下ls和df卡死

1. strace看下卡在哪里 https://lokie.wang/article/43 strace ls strace df -h 2. 原因 https://segmentfault.com/a/1190000040620740 3. fuser 和 umount都不行,最后只能重启 重启机器还起不来了垃圾...

iOS(swiftui)——系统悬浮窗( 可在其他应用上显示,可实时更新内容)

因为ios系统对权限的限制是比较严格的,ios系统本身是不支持全局悬浮窗(可在其他app上显示)。在iphone14及之后的iPhone机型中提供了一个叫 灵动岛的功能,可以在手机上方可以添加一个悬浮窗显示内容并实时更新,但这个功能有很多局限性 如:需要iPhone14及之后的机型且系统…...

css弹窗动画效果,示例弹窗从底部弹出

从底部弹出来,有过渡动画效果 用max-height可以自适应内容的高度,当内容会超过最大高度时可以在弹窗里加个scroll-view 弹窗不能用v-if来隐藏,不然transition没效果,transition只能对已有dom元素起效果,所以用透明和v…...

STM32CubeIDE(CUBE-MX hal库)----RTC时钟,时钟实时显示

系列文章目录 STM32CubeIDE(CUBE-MX hal库)----初尝点亮小灯 STM32CubeIDE(CUBE-MX hal库)----按键控制 STM32CubeIDE(CUBE-MX hal库)----串口通信 STM32CubeIDE(CUBE-MX hal库)----定时器 STM32CubeIDE(CUBE-MX hal库)----蓝牙模块HC-05(详细配置) 前言…...

ubuntu 安装Nvidia驱动

官网下载 sudo bash NVIDIA。。。。。跟着b站机器人工匠阿杰即可。...

『亚马逊云科技产品测评』活动征文|基于亚马逊云EC2搭建PG开源数据库

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器(Elastic Compute Cloud)是亚马…...

【开题报告】基于J2EE的高校水电费管理系统的设计与实现

1.选题背景 随着高校规模的扩大和信息化建设的深入,学生宿舍的水电费管理成为一项复杂而重要的任务。传统的水电费管理方式通常依赖于人工操作,存在着管理效率低下、数据处理繁琐、费用统计不准确等问题。因此,设计和实现一款基于J2EE的高校…...

Revisiting Proposal-based Object Detection阅读笔记

Revisiting Proposal-based Object Detection阅读笔记 论文地址:link Abstract For any object detector, the obtained box proposals or queries need to be classified and regressed towards ground truth boxes. 对于任何物体检测器来说,获得的…...

Docker部署NFS服务

创建基础镜像 mkdir /data/nfs -p chmod 755 /data/nfs# NFS默认端口: 111、2049、20048 docker run -d \ --privileged \ --name nfs_server \ -p 111:111/tcp \ -p 111:111/udp \ -p 2049:2049/tcp \ -p 2049:2049/udp \ -p 30001-30005:30001-30005/tcp \ -p 30001-30005:3…...

深度学习TensorFlow2基础知识学习后半部分

介绍几个重要操作: 1.范数 a tf.fill([1,2], value2.) b tf.norm(a)# 二范数#第二种计算方法 # 计算验证 a tf.square(a) log("a的平方:", a) a tf.reduce_sum(a) log("a平方后的和:", a) b tf.sqrt(a) log("a平方和后开根号:"…...

电脑系统重装Win10专业版操作教程

用户想给自己的电脑重新安装上Win10专业版系统,但不知道具体的重装步骤。接下来小编将详细介绍Win10系统重新安装的步骤方法,帮助更多的用户完成Win10专业版的重装,重装后用户即可体验到Win10专业版系统带来的丰富功能。 准备工作 1. 一台正常…...

打包Python项目

打包Python项目 本教程将指导您如何打包一个简单的Python项目。它将 向您展示如何添加必要的文件和结构来创建包,如何 构建包,以及如何将其上传到Python包索引(PyPI)。 尖端 如果您在运行本教程中的命令时遇到问题,请…...

使用Python实现爬虫IP负载均衡和高可用集群

做大型爬虫项目经常遇到请求频率过高的问题,这里需要说的是使用爬虫IP可以提高抓取效率,那么我们通过什么方法才能实现爬虫IP负载均衡和高可用集群,并且能快速的部署并且完成爬虫项目。 通常在Python中实现爬虫ip负载均衡和高可用集群需要一…...

Jenkins+Maven+Gitlab+Tomcat 自动化构建打包,部署

环境准备 1、安装服务 Jenkins工具、环境、插件配置 全局变量配置 Manage Jenkins>tools>JDK 安装 安装插件 Deploy to container 安装此插件,才能将打好的包部署到tomcat上 配置国内mvn源 创建maven项目 1 2 3 4 5 6 7 8 9 10...

泰凌微(Telink)8258配置串口收发自定义数据

在官网下载SDK后(以Mesh SDK为例)使用Eclipse打开,对应MCU的配置文件在app_config_8258.h,默认的HCI接口是HCI_USE_NONE,如果改成HCI_USE_UART后可以通过串口收发数据,此时默认接收函数处理的是以Telink的协…...

入门低代码开发:快速构建应用程序的方法

一、什么是低代码 低代码开发是一种通过可视化建模和拖拽式设计工具来快速构建应用程序的方法。传统软件开发通常需要编写大量的代码,而低代码开发则提供了更高层次的抽象,使开发过程更加简单和高效。通过可视化界面,用户可以通过拖拽组件、配…...

常见客户端消息推送服务【Java后端】

客户端消息推送 1、推送服务 苹果 APNs(Apple Push Notification service) 谷歌 FCM(Firebase Cloud Messaging)GCM(Google Cloud Messaging) 第三方 个推(Getui)UniApp&#xff…...

C++11(下)

可变参数模板 C11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板. 相比C98/03, 类模版和函数模版中只能含固定数量的模版参数, 可变模版参数无疑是一个巨大的改进, 然而由于可变模版参数比较抽象, 使用起来需要一定的技巧, 所以这块还是比较晦涩的.掌握一些基…...

深度学习与逻辑回归模型的融合--TensorFlow多元分类的高级应用

手写数字识别 文章目录 手写数字识别1、线性回归VS逻辑回归Sigmoid函数 2、逻辑回归的基本模型-神经网络模型3、多元分类基本模型4、TensorFlow实战解决手写数字识别问题准备数据集数据集划分 特征数据归一化归一化方法归一化场景 标签数据独热编码One-Hot编码构建模型损失函数…...

水库大坝安全监测参数与设备

智慧水利中,水库大坝的安全监测必不可少。做好水库大坝的安全监测,是确保水库大坝结构安全和预防灾害的重要手段。对于预防灾害、保护人民生命财产安全、优化工程管理、改进工程设计、保护环境资源和提高公众信任等方面有着重要的意义。 水利水库大坝安全…...

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 22 章:情感分析提示

要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 22 章:情感分析提示 情感分析是一种可以让模型确定一段文字的情感基调或态度的技术,比如它是正面的、负面的还是中性的。 要在 ChatGPT 中使用情感分析提示,应向模型提…...

数据清洗、特征工程和数据可视化、数据挖掘与建模的主要内容

1.4 数据清洗、特征工程和数据可视化、数据挖掘与建模的内容 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.4节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。内容涵盖数据科学…...

C++ STL容器与常用库函数

STL是提高C编写效率的一个利器 STL容器&#xff1a; 一、#include <vector> 英文翻译&#xff1a;vector &#xff1a;向量 vector是变长数组(动态变化)&#xff0c;支持随机访问&#xff0c;不支持在任意位置O(1)插入。为了保证效率&#xff0c;元素的增删一般应该在末尾…...

Nmap脚本简介

什么是Nmap脚本 Nmap脚本是一种由Nmap扫描器使用的脚本语言&#xff0c;用于扫描目标网络中的主机、端口、服务等信息&#xff0c;并提供一系列自动化的测试和攻击功能。从渗透测试工程师的角度来看&#xff0c;Nmap脚本是一种非常有用的工具&#xff0c;能够帮助渗透测试工程师…...

Kafka -- 初识

目录 kafka是什么 Topic Partition Broker Cousumer CousumerGroup Offset reblance broker 消息存储 Isr kafka是什么 Kafka 是一个分布式的消息引擎&#xff0c;能够发布和订阅消息流&#xff08;类似于消息队列&#xff09; 以容错的、持久的方式存储消息流 多分区…...

玩转Sass:掌握数据类型!

当我们在进行前端开发的时候&#xff0c;有时候需要使用一些不同的数据类型来处理样式&#xff0c;Sass 提供的这些数据类型可以帮助我们更高效地进行样式开发&#xff0c;本篇文章将为您详细介绍 Sass 中的数据类型。 布尔类型 在 Sass 中&#xff0c;布尔数据类型可以表示逻…...

Django + Matplotlib:实现数据分析显示与下载为PDF或SVG

写作背景 首先&#xff0c;数据分析在当前的信息时代中扮演着重要的角色。随着数据量的增加和复杂性的提高&#xff0c;人们对于数据分析的需求也越来越高。 其次&#xff0c;笔者也确确实实曾经接到过一个这样的开发需求&#xff0c;甲方是一个医疗方面的科研团队&#xff0…...

【Rust】第一节:安装

1 说明 一些学习记录 环境&#xff1a;MacOS 2 步骤 1、执行curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh 2、看到打印 info: downloading installerWelcome to Rust!... ...This path will then be added to your PATH environment variable by modifyin…...

12-07 周四 Pytorch 使用Visdom 进行可视化

简介 在完成了龙良曲的Pytroch视频课程之后&#xff0c;楼主对于pytroch有了进一步的理解&#xff0c;比如&#xff0c;比之前更加深刻的了解了BP神经网络的反向传播算法&#xff0c;梯度、损失、优化器这些名词更加熟悉。这个博客简要介绍一下在使用Pytorch进行数据可视化的一…...

基于微信小程序的智慧校园导航系统研究

点我下载完整版 基于微信小程序的智慧校园导航系统研究 Research on Smart Campus Navigation System based on WeChat mini program 目录 目录 2 摘要 3 关键词 4 第一章 研究背景与意义 4 1.1 校园导航系统研究的背景 4 1.2 微信小程序在校园导航系统中的应用 5 1.3 研究的目…...

VUE3给table的head添加popover筛选、时间去除时分秒、字符串替换某字符

1. VUE3给table的head添加popover筛选 <el-tableref"processTableRef"class"process-table"row-key"secuId":data"pagingData"style"width: 100%"highlight-current-row:height"stockListHeight":default-exp…...

19、XSS——HTTP协议安全

文章目录 一、Weak Session IDs(弱会话IDs)二、HTTP协议存在的安全问题三、HTTPS协议3.1 HTTP和HTTPS的区别3.2 SSL协议组成 一、Weak Session IDs(弱会话IDs) 当用户登录后&#xff0c;在服务器就会创建一个会话&#xff08;Session&#xff09;&#xff0c;叫做会话控制&…...

深圳锐杰金融:用金融力量守护社区健康

深圳市锐杰金融投资有限公司&#xff0c;作为中国经济特区的中流砥柱&#xff0c;近年来以其杰出的金融成绩和坚定的社会责任立场引人注目。然而&#xff0c;这并非一个寻常的金融机构。锐杰金融正在用自己的方式诠释企业责任和慈善精神&#xff0c;通过一系列独特的慈善项目&a…...

python对py文件加密

参考文献&#xff1a; 【编程技巧】py文件批量编译&#xff0c;py批量转pyd&#xff0c;PyCharm设置py转pyd功能_py文件编译pyd-CSDN博客 【Python小技巧】加密又提速&#xff0c;把.py文件编译为.pyd文件&#xff08;类似dll函数库&#xff09;&#xff0c;你值得拥有&#x…...

Thymeleaf生成pdf表格合并单元格描边不显示

生成pdf后左侧第一列的右描边不显示&#xff0c;但是html显示正常 显示异常时描边的写法 cellpadding“0” cellspacing“0” &#xff0c;td,th描边 .self-table{border:1px solid #000;border-collapse: collapse;width:100%}.self-table th{font-size:12px;border:1px sol…...

C# Solidworks二次开发:三种获取SW设计结构树的方法-第二讲

今天这篇文章是接上一篇文章的&#xff0c;主要讲述的是获取SW设计结构树节点的第二种方法。 这个方法获取节点的逻辑是先获取最顶层节点&#xff0c;然后再通过获取顶层节点的子节点一层一层的把所有节点都找出来&#xff0c;也就是需要递归。想要用这个方法就要了解下面几个…...