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

Python代码实现解析MULTIPOLYGON几何对象类型数据为嵌套列表

MULTIPOLYGON

MULTIPOLYGON是一种地理信息系统(GIS)中的几何对象类型,用于表示由多个多边形组成的复杂地理区域。它是一种多边形的集合,每个多边形可以是简单的凸多边形或复杂的凹多边形。

MULTIPOLYGON类型的几何对象通常用于描述具有内部边界的地理区域,例如国家边界、湖泊或山脉。每个多边形都由一组有序的点坐标组成,这些点按照特定的顺序连接起来形成多边形的边界

MULTIPOLYGON对象可以用于存储和处理地理空间数据,例如在地图应用程序中显示地理区域或进行地理分析。它可以表示复杂的地理形状,如多个岛屿组成的群岛或多个内部孔洞的边界。

在GIS软件和库中,MULTIPOLYGON类型通常是与其他地理空间数据类型(如点、线或多线)一起使用的,以构建完整的地理信息系统功能。它提供了一种灵活而强大的方式来处理和操作复杂的地理区域数据。

总结起来,MULTIPOLYGON是一种用于表示由多个多边形组成的复杂地理区域的地理对象类型,它在地理信息系统中被广泛使用,用于存储、处理和分析地理空间数据。


Python代码实现解析MULTIPOLYGON几何对象类型数据为嵌套列表

  • 输入:MULTIPOLYGON几何对象类型数据(字符串数据
    结构MULTIPOLYGON (((-74.05050806403247 40.566422034161015, ...,-74.05053865301059 40.56644067379689, -74.05050806403247 40.566422034161015))
    以字符串'MULTIPOLYGON'开头,用'(' ')'包裹着一个个前后各由'((' '))'包裹的点集构成的POLYGON,其中点集中的点的坐标用','隔开,点的坐标之间用' '隔开。
  • 输出:双层嵌套列表
    外层列表的元素是一个个POLYGON列表,内层POLYGON列表的元素是一个个点的经纬度坐标字符串(形如'longitude,latitude'

具体实现代码:

import redef extract_content_from_MULTIPOLYGON(string):pattern = r'\(\((.*?)\)\)'  # 定义正则表达式模式,使用非贪婪匹配matches = re.findall(pattern, string)  # 使用findall函数查找所有匹配项if not matches:  # 如果没有匹配项,返回空列表return []else:return matchesdef MULTIPOLYGON_to_POLYGONLIST(multpolygon):prefix = 'MULTIPOLYGON'multpolygon = multpolygon[len(prefix):]multpolygon = multpolygon[2:-1]list_polygon_str = extract_content_from_MULTIPOLYGON(multpolygon)if not list_polygon_str:return []else:list_POLYGON = []for polygon_str in list_polygon_str:list_point_str = polygon_str.split(',')POLYGON = []for point in list_point_str:if point[0] == ' ':point_str = point[1:]else:point_str = pointpoint_list = point_str.split(' ')dest_str = point_list[0] + ',' + point_list[1]POLYGON.append(dest_str)list_POLYGON.append(POLYGON)return list_POLYGON# 给定MULTIPOLYGON几何对象字符串,调用函数MULTIPOLYGON_to_POLYGONLIST,返回双层嵌套列表,便于后续使用

http://www.lryc.cn/news/128069.html

相关文章:

  • SSH连接工具汇总
  • Java的AQS框架是如何支撑起整个并发库的
  • 一.net core 自动化发布到docker (Jenkins安装)
  • 二刷LeetCode--148. 排序链表(C++版本),必会题,思维题
  • css flex 上下结构布局
  • win下qwidget全屏弹窗后其他窗口鼠标样式无法更新的问题
  • Java【数据结构】二分查找
  • 数据库技术--数据库引擎,数据访问接口及其关系详解(附加形象的比喻)
  • 【BASH】回顾与知识点梳理(三十三)
  • 同步请求和异步请求
  • Transformer是什么,Transformer应用
  • 故障011:dmap服务缺失libnsl.so修复
  • 第十三章 SpringBoot项目(总)
  • 利用Python隧道爬虫ip轻松构建全局爬虫网络
  • Spring Clould 网关 - Gateway
  • PHP使用phpmailer及SMTP服务实现邮件发送
  • 交换实验一
  • 计算机中丢失MSVCR120.dll,找不到MSVCR120.dll是什么意思?
  • avue多选列表根据后端返回的某个值去判断是否选中;avue-curd多选回显
  • Vue2中根据权限添加动态路由
  • 搭建 Python 环境 | Python、PyCharm
  • NPOI 读取和写入Excel
  • Linux工具【2】(调试器gdb、项目自动化构建工具make/Makefile)
  • C++ 网络编程项目fastDFS分布式文件系统(三)-Nginx部分
  • Apache-DBUtils
  • LangChain手记 Agent 智能体
  • 87-基于stm32单片机粮仓仓库环境温湿度烟雾监测报警系统Proteus仿真+源码
  • ChatGPT 调教日记(二):程序员转量化的背景知识
  • 什么是网络地址转换 (NAT)
  • 系统架构设计师---事务管理、并发控制、数据库的备份与恢复