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

所有北京网站建设公司wordpress 禁止评论

所有北京网站建设公司,wordpress 禁止评论,渝中集团网站建设,自建网站和租用空间网站文章目录 1. KMZ 文件与 KML 文件简介1.1 KMZ 文件1.2 KML 文件 2. Python 环境配置与依赖安装3. 代码实现详解3.1 查找 KMZ 文件3.2 解压 KMZ 文件3.3 解析 KML 文件3.4 可视化 KMZ 数据 4. 项目实战4.1. 数据采集4.2. 项目完整代码 5. 项目运行与结果展示6. 总结与展望 在处理… 文章目录 1. KMZ 文件与 KML 文件简介1.1 KMZ 文件1.2 KML 文件 2. Python 环境配置与依赖安装3. 代码实现详解3.1 查找 KMZ 文件3.2 解压 KMZ 文件3.3 解析 KML 文件3.4 可视化 KMZ 数据 4. 项目实战4.1. 数据采集4.2. 项目完整代码 5. 项目运行与结果展示6. 总结与展望 在处理地理空间数据时KMZ 文件是一种常见的格式用于存储地图和地理信息数据。KMZ 文件是 KML 文件的压缩版本其中 KMLKeyhole Markup Language用于描述地理数据的格式。本文将详细介绍如何使用 Python 处理 KMZ 文件提取其中的地理数据并将其可视化到地图上。本文的核心代码将涉及文件的解压、KML 文件的解析、GPS 数据的提取以及如何使用 Folium 库将数据展示到地图上。 1. KMZ 文件与 KML 文件简介 1.1 KMZ 文件 KMZ 文件是 KML 文件的压缩版本通常用于存储 Google Earth 或 Google Maps 中使用的地理信息数据。KMZ 文件可以包含一个或多个 KML 文件以及其他资源文件如图片、图标等。KML 文件是基于 XML 的格式用于描述地理数据的标记、路径、区域等信息。 1.2 KML 文件 KML 文件由 XML 构成用于存储地理数据如地点标记、线条、区域、图像叠加等。KML 的基本结构包括 Placemark标记点Point点类型LineString线条Polygon多边形TimeStamp时间戳 2. Python 环境配置与依赖安装 在开始之前确保你的 Python 环境中已经安装了以下依赖 folium用于地图可视化xml.etree.ElementTree用于解析 XML 文件zipfile用于解压 KMZ 文件glob用于文件路径匹配 可以使用以下命令安装所需的库 pip install folium3. 代码实现详解 3.1 查找 KMZ 文件 import os import globdef find_kmz_files(directory):# 使用 glob 模块查找指定目录下的所有 .kmz 文件kmz_files glob.glob(os.path.join(directory, *.kmz))return kmz_files功能遍历指定目录查找所有以 .kmz 结尾的文件。实现使用 glob 模块和通配符模式来匹配所有 KMZ 文件。 3.2 解压 KMZ 文件 import zipfiledef extract_kml_from_kmz(kmz_file_path):# 解压 KMZ 文件with zipfile.ZipFile(kmz_file_path, r) as kmz:# 查找 KML 文件kml_files [name for name in kmz.namelist() if name.lower().endswith(.kml)]if kml_files:kml_file_path kml_files[0]kmz.extract(kml_file_path, os.path.dirname(kmz_file_path))return os.path.join(os.path.dirname(kmz_file_path), kml_file_path)return None功能解压 KMZ 文件并提取其中的 KML 文件。实现使用 zipfile 模块打开 KMZ 文件查找并解压 KML 文件。 3.3 解析 KML 文件 import xml.etree.ElementTree as ETdef parse_kml(kml_file_path):gps_data []tree ET.parse(kml_file_path)root tree.getroot()# KML 的 XML namespacenamespace {kml: http://earth.google.com/kml/2.2}print(fRoot element: {root.tag})# 查找所有 Placemark 元素for placemark in root.findall(.//kml:Placemark, namespace):coordinates placemark.find(.//kml:Point/kml:coordinates, namespace)if coordinates is not None:coords coordinates.text.strip().split(,)if len(coords) 3:try:longitude float(coords[0])latitude float(coords[1])altitude float(coords[2])gps_data.append({latitude: latitude,longitude: longitude,altitude: altitude})except ValueError as e:print(fError parsing coordinates: {e})return gps_data功能解析 KML 文件提取 GPS 数据经纬度和高度。实现使用 xml.etree.ElementTree 解析 XML 格式的 KML 文件通过查找 Placemark 元素和 coordinates 元素来获取地理数据。 3.4 可视化 KMZ 数据 import folium from folium.features import CustomIcondef visualize_multiple_kmz_data(kmz_data_list):if not kmz_data_list:print(No GPS data available to visualize.)return# 计算所有经纬度的平均值作为地图的中心all_latitudes []all_longitudes []for kmz_data in kmz_data_list:latitudes [data[latitude] for data in kmz_data[gps_data]]longitudes [data[longitude] for data in kmz_data[gps_data]]all_latitudes.extend(latitudes)all_longitudes.extend(longitudes)avg_latitude sum(all_latitudes) / len(all_latitudes)avg_longitude sum(all_longitudes) / len(all_longitudes)map_center [avg_latitude, avg_longitude]gps_map folium.Map(locationmap_center, zoom_start14, tilesOpenStreetMap)folium.TileLayer(tileshttps://mt1.google.com/vt/lyrssx{x}y{y}z{z},nameGoogle Satellite,attr© Google).add_to(gps_map)folium.LayerControl().add_to(gps_map)# 为每个 KMZ 文件使用不同的颜色colors [red, blue, green, purple, orange, darkred, lightred, beige, darkblue, darkgreen, cadetblue, darkpurple, white, pink, lightblue, lightgreen, gray, black, lightgray]for idx, kmz_data in enumerate(kmz_data_list):color colors[idx % len(colors)]for data in kmz_data[gps_data]:folium.CircleMarker([data[latitude], data[longitude]],radius0.5, # 半径大小colorcolor, # 边框颜色fillTrue,fill_colorcolor, # 填充颜色fill_opacity0.8).add_to(gps_map)# 绘制路径线并添加箭头for i in range(1, len(kmz_data[gps_data])):start_point kmz_data[gps_data][i-1]end_point kmz_data[gps_data][i]# 绘制线条folium.PolyLine(locations[(start_point[latitude], start_point[longitude]),(end_point[latitude], end_point[longitude])],colorcolor,weight2).add_to(gps_map)# 添加箭头folium.Marker(location[(start_point[latitude] end_point[latitude]) / 2,(start_point[longitude] end_point[longitude]) / 2],iconCustomIcon(https://upload.wikimedia.org/wikipedia/commons/e/e5/Black_triangle_pointing_right.svg,icon_size(10, 10), icon_anchor(5, 5))).add_to(gps_map)gps_map.save(multiple_kmz_map.html)print(GPS map saved as multiple_kmz_map.html.)功能将多个 KMZ 文件的数据可视化到一个地图上使用不同的颜色表示不同的 KMZ 文件。实现 计算所有点的平均经纬度作为地图的中心。使用 folium.Map 创建地图并添加地图图层。对每个 KMZ 文件使用不同的颜色并将其 GPS 数据以 CircleMarker 的形式添加到地图上。 绘制路径线并在路径中添加箭头指示方向。 4. 项目实战 4.1. 数据采集 两个kmz文件 其中一个kmz文件解压会看到有一个kml文件 kml文件打开会看到一些关键信息以下是部分信息截图 4.2. 项目完整代码 import os import glob import folium import zipfile import xml.etree.ElementTree as ET from folium.features import CustomIcondef find_kmz_files(directory):kmz_files glob.glob(os.path.join(directory, *.kmz))return kmz_filesdef extract_kml_from_kmz(kmz_file_path):with zipfile.ZipFile(kmz_file_path, r) as kmz:kml_files [name for name in kmz.namelist() if name.lower().endswith(.kml)]if kml_files:kml_file_path kml_files[0]kmz.extract(kml_file_path, os.path.dirname(kmz_file_path))return os.path.join(os.path.dirname(kmz_file_path), kml_file_path)return Nonedef parse_kml(kml_file_path):gps_data []tree ET.parse(kml_file_path)root tree.getroot()namespace {kml: http://earth.google.com/kml/2.2}for placemark in root.findall(.//kml:Placemark, namespace):coordinates placemark.find(.//kml:Point/kml:coordinates, namespace)if coordinates is not None:coords coordinates.text.strip().split(,)if len(coords) 3:try:longitude float(coords[0])latitude float(coords[1])altitude float(coords[2])gps_data.append({latitude: latitude,longitude: longitude,altitude: altitude})except ValueError as e:print(fError parsing coordinates: {e})return gps_datadef visualize_multiple_kmz_data(kmz_data_list):if not kmz_data_list:print(No GPS data available to visualize.)returnall_latitudes []all_longitudes []for kmz_data in kmz_data_list:latitudes [data[latitude] for data in kmz_data[gps_data]]longitudes [data[longitude] for data in kmz_data[gps_data]]all_latitudes.extend(latitudes)all_longitudes.extend(longitudes)avg_latitude sum(all_latitudes) / len(all_latitudes)avg_longitude sum(all_longitudes) / len(all_longitudes)map_center [avg_latitude, avg_longitude]gps_map folium.Map(locationmap_center, zoom_start14, tilesOpenStreetMap)folium.TileLayer(tileshttps://mt1.google.com/vt/lyrssx{x}y{y}z{z},nameGoogle Satellite,attr© Google).add_to(gps_map)folium.LayerControl().add_to(gps_map)colors [red, blue, green, purple, orange, darkred, lightred, beige, darkblue, darkgreen, cadetblue, darkpurple, white, pink, lightblue, lightgreen, gray, black, lightgray]for idx, kmz_data in enumerate(kmz_data_list):color colors[idx % len(colors)]for data in kmz_data[gps_data]:folium.CircleMarker([data[latitude], data[longitude]],radius0.5,colorcolor,fillTrue,fill_colorcolor,fill_opacity0.8).add_to(gps_map)for i in range(1, len(kmz_data[gps_data])):start_point kmz_data[gps_data][i-1]end_point kmz_data[gps_data][i]folium.PolyLine(locations[(start_point[latitude], start_point[longitude]),(end_point[latitude], end_point[longitude])],colorcolor,weight2).add_to(gps_map)folium.Marker(location[(start_point[latitude] end_point[latitude]) / 2,(start_point[longitude] end_point[longitude]) / 2],iconCustomIcon(https://upload.wikimedia.org/wikipedia/commons/e/e5/Black_triangle_pointing_right.svg,icon_size(10, 10), icon_anchor(5, 5))).add_to(gps_map)gps_map.save(multiple_kmz_map.html)print(GPS map saved as multiple_kmz_map.html.)if __name__ __main__:directory_path F:\\notebookComputer\\20240723kmz_files find_kmz_files(directory_path)if kmz_files:kmz_data_list []for kmz_file_path in kmz_files:kml_file_path extract_kml_from_kmz(kmz_file_path)if kml_file_path:parsed_gps_data parse_kml(kml_file_path)print(fParsed GPS data: {parsed_gps_data})kmz_data_list.append({file_name: os.path.basename(kmz_file_path),gps_data: parsed_gps_data})if kmz_data_list:visualize_multiple_kmz_data(kmz_data_list)else:print(No GPS data available to visualize.)else:print(fNo .kmz files found in directory: {directory_path})5. 项目运行与结果展示 在代码执行完毕后将会生成一个名为 multiple_kmz_map.html 的文件该文件可以用浏览器打开以查看地图上的标记点和路径。地图将会显示所有 KMZ 文件中提取的 GPS 数据每个文件的标记点使用不同的颜色表示。 multiple_kmz_map.html文件不好截图如下 浏览器打开multiple_kmz_map.html文件效果图如下 6. 总结与展望 本文详细介绍了如何使用 Python 处理 KMZ 文件提取其中的 GPS 数据并通过 Folium 库将其可视化。通过将 KMZ 文件中的地理数据转换为地图标记点和路径线我们可以更直观地分析和展示地理数据。未来的工作可以包括支持更多的地理数据格式、添加更多的地图样式和功能、以及优化代码的性能和可读性。根据需求文章可以继续扩展以包含更多的技术细节、优化建议和实际应用场景的分析。 欢迎点赞|关注|收藏|评论您的肯定是我创作的动力
http://www.hkea.cn/news/14550246/

相关文章:

  • 做计算机题目的网站用服务器建立网站教程
  • 视频网站怎么做可以播放电视剧网站建设流程平台
  • 做金融的看哪些网站定制营销型网站公司
  • 网站后缀ga佛山高端网站建设
  • 门户网站的大数据应用终身免费建站
  • 门户网站的特征做网站设计提成赚钱吗
  • 国内优秀网站安阳网站建设_
  • 柳州企业网站制作架子鼓谱那个网站做的好
  • 做网站要什么知识条件做网站 长
  • 网站的开发工具和运行环境哪里有建设网站
  • 建设网站的实验报告手机网站源文件
  • 网站建设素材包手机移动开发网站
  • 站长工具高清无吗手机网站下拉列表
  • 校园网站开发需求wordpress 主题 tewnty ten 导航条字体 修改
  • 网站为什么要seo线上网络平台推广
  • 微网站和wap湘潭网站建设公司有哪些
  • 做关于卖宠物饲料网站有什么名字吗个人简历word可编辑免费
  • 成都购物网站设计火车头采集Wordpress字段
  • 嘉兴网站建设外包公司wordpress站内信插件
  • 简述网站的创建流程设计iphone手机网站
  • 蛋糕网站建设的目的crm免费
  • 建设网站对公司起什么作用是什么百度公司简介介绍
  • 山东企业建站系统费用网站建设计划书怎么写
  • 专业的企业网站优化公司黄山旅游几月份去最好
  • 游戏ui设计网站哪些网站可以医生做兼职
  • 深圳龙岗做网站公司三合一网站选什么系统
  • 网站开发需要什么资料视频网站开发 价格
  • 宁夏网站开发设计说明书西安西郊网站建设
  • 山东广饶县建设局网站报告格式范文
  • 网站建设推广内容wordpress 添加编辑框