import numpy as np
import matplotlib.pyplot as plt
from shapely.geometry import Polygon
import geopandas as gpd
import mathdef make_mesh(box,w,h): #按照w,h对box进行网格划分[xmin,ymin,xmax,ymax]=boxlist_x=np.arange(xmin,xmax,w)list_y=np.arange(ymin,ymax,h)polygon_list=[]for i in range(len(list_x)):for j in range(len(list_y)):xleft=list_x[i]ydown=list_y[j]if i==len(list_x)-1:xright=xmaxelse:xright=list_x[i+1]if j==len(list_y)-1:yup=ymaxelse:yup=list_y[j+1]rectangle=Polygon([(xleft, ydown), (xright, ydown), (xright, yup), (xleft, yup)])polygon_list.append(rectangle)return gpd.GeoSeries(polygon_list)path="f:\\shapefile\\OUTPUT\\test.shp"
gdf=gpd.read_file(path)
print(gdf.total_bounds)
[xmin,ymin,xmax,ymax]=gdf.total_bounds
w=(xmax-xmin)/10
h=(ymax-ymin)/10
#[xmin,ymin,xmax,ymax]=eval(input("输入box:"))
#[w,h]=eval(input("输入网格宽和高:"))rect=make_mesh([xmin,ymin,xmax,ymax],w,h)
ax=gdf.plot()
rect.boundary.plot(ax=ax,color='yellow')
plt.show()rectangles=gpd.GeoDataFrame(geometry=rect)
rectangles['RectangleID']=range(len(rectangles))res=gpd.sjoin(left_df=rectangles,right_df=gdf,how='right',op='intersects')g=res.groupby('RectangleID')
g=dict(list(g))
count=0
ax=gdf.plot()
color=['yellow','green','blue','black','purple','red']
mean_heights=[]
for k,v in g.items():row=k//10col=k%10mean_heights.append((row,col,v['height'].mean()))print("row={},col={},mean height={}".format(row,col,v["height"].mean()))gpd.GeoSeries(rectangles['geometry'][k]).boundary.plot(ax=ax,color=color[(row%6+col)%6])v.plot(ax=ax,color=color[(row%6+col)%6])plt.show()
print(res.columns.tolist())
print(res.loc[:,['index_left','RectangleID']])
for mean_height in mean_heights:print(mean_height)

这里需要关注的是geopandas.sjoin这个函数的使用,这个函数非常强大,详细使用方法见链接
上述代码实现了:
对地图文件按照矩形进行分割,得到一个网状结构,然后统计每个网格内建筑物的平均高度。
以下是运行结果:

这是对网络的分割,下面是获取每个网格内的建筑物:

这是每个网格内建筑物的平均高度(每个网格以元祖存储):

Geopandas对地图文件按区域进行分割并统计相关推荐

  1. 2020-12-17 Halcon初学者知识【4】区域和分割

    2020-12-17 Halcon初学者知识 [4]区域和分割 通过以下一个小项目,你能够学到:1)均值滤波  2)区域合并  3)区域访问  4)文件存储. read_image (Image, ' ...

  2. android中资源文件的两种访问方式,Android_Android学习笔记-保存文件(Saving Files),Android设备有两种文件存储区域 - phpStudy...

    Android学习笔记-保存文件(Saving Files) Android设备有两种文件存储区域: 内部存储和外部存储 ("internal" and "externa ...

  3. Echarts地图 绘制自定义区域 - geojson.io使用方法

    Echarts地图 绘制自定义区域 & 解决区域点击无效 1. 绘制地图自定义区域 需求:绘制带高新区的河源市地图,目前百度地图json还没有此新区.需手动绘制. STEP1:获取市区json ...

  4. 使用3DLiDAR传感器进行基于同心区域的区域地面分割和地面似然估计

    论文:https://arxiv.org/pdf/2108.05560.pdf github:https://github.com/LimHyungTae/patchwork 文章目录 摘要 引言 相 ...

  5. [ROS2] map_server加载地图文件的三种模式

    map的数据类型 map话题的类型是nav_msgs::msg::OccupancyGrid.使用下面的命令可以查询该类型的数据结构. ros2 interface show nav_msgs/msg ...

  6. php生成sitemap.xml地图文件

    文章目录 前言 什么是Sitemap? sitemap文件遵循指南 xml格式详解 实战代码 sitemap组件代码 调用sitemap组件 仓库地址 实战截图 相关问题 Sitemap提交后,多久能 ...

  7. 地图文件在服务器吗,服务器地图文件

    服务器地图文件 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 华为云帮助中心, ...

  8. java地图文件的编辑器_地图编辑器的选择1

    对于一些小游戏来说,规则就是它的全部,这类游戏使用的场景几乎都是随机生成的.比如,俄罗斯方块.泡泡龙.斗地主.水果忍者之类的. 稍微上一些规模的游戏,随机场景可能不满足其游戏难度,这时开发商就会选择使 ...

  9. 2018 AI Challenger全球AI挑战赛‘眼底水肿病变区域自动分割’赛道比赛总结

    2018 AI Challenger全球AI挑战赛'眼底水肿病变区域自动分割'赛道比赛总结 苏州的十月,无论是天气还是桂香都觉得让人无所适从,忙碌的低年级学生一阵风似的从身边经过,恍惚才觉得,这是我最 ...

最新文章

  1. CentOS7 64位下MySQL5.7安装与配置
  2. 模式识别之数字识别---扑克牌识别
  3. Golang——数据类型转换(Sprintf、Format、Append方式转换)
  4. 软件_搭建rtmp视频推送环境,腾讯云,ubuntu16
  5. 干货:手把手教你在音频分类DCASE2017比赛中夺冠
  6. 如何进行软件需求分析
  7. 详细教您如何把wav转换成mp3格式
  8. linux安装软件火狐浏览器,火狐浏览器linux怎么样安装
  9. Web前端开发技术课程大作业:基于HTML+CSS+JavaScript实现校园主题-萍乡田家炳中学校网站(1页)
  10. python进阶之web前端(01—HTML超文本标记语言)
  11. 什么是误报?如何识别误报和漏报
  12. WebGoat v8.1.0 下载安装(windows)
  13. 不完全免疫算法简介MOIA-DCSS--AIS学习笔记8
  14. 利用Max ,Break,AO贴图
  15. 软件工程(考研面试版)
  16. 计算机最简单的爱情音乐,音乐里那些最动人的情话,适合一个人在家静静聆听...
  17. 树莓派(Raspberry Pi OS)操作系统的选择
  18. 手机里的照片导入计算机的方法,怎么把手机照片导入电脑_手机照片传到电脑的方法...
  19. 30个超级好玩的网站
  20. 微型计算机杂志主要内容,中国IT杂志生存态势分析

热门文章

  1. java 监听jtextfield_java JTextField之监听器
  2. GIS杂记:气象数据处理心得(矢栅转换)
  3. tomcat加载(挂载)应用的几种方式
  4. 物联网智慧城市建设系统源码
  5. Linux系统编程之进程间通信(IPC)
  6. 游戏云间之五:游戏架构
  7. Beaglebone Black 最小Linux从零系统编译
  8. MS08-067漏洞简谈与利用
  9. 大数据入门(五)-分布式计算框架MapReduce
  10. Mathematica 与数值计算