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

免费咨询做网站百度推广代理公司哪家好

免费咨询做网站,百度推广代理公司哪家好,衢州学院,佛山网站公司Shapefile(.shp): 根本错误原因: Shapefile 的属性数据 .dbf 是老旧格式,默认不含编码信息 解决方法: 在shapefile文件夹目录上,创建一个同名的.cpg文件,内容"oem" 使用ArcGIS再右键打开属性表,…

Shapefile(.shp):

根本错误原因:
Shapefile 的属性数据 .dbf 是老旧格式,默认不含编码信息

解决方法:

在shapefile文件夹目录上,创建一个同名的.cpg文件,内容"oem"

使用ArcGIS再右键打开属性表,正确编码✅

 

用于解决中文编码错误的shapefile_2_geojson脚本:
ps 代码不是通用模板,根据你的需求进行调整

import geopandas as gpd
import os
import json
from pyproj import CRS
import warnings
import codecs
warnings.filterwarnings('ignore')def convert_shp_to_geojson(shp_path, output_path):"""将 Shapefile 转换为 WGS84 坐标系的 GeoJSON参数:shp_path: Shapefile 文件路径output_path: 输出 GeoJSON 文件路径"""print(f"正在处理: {shp_path}")try:# 检查是否存在CPG文件,如果不存在则创建cpg_path = shp_path.replace('.shp', '.cpg')if not os.path.exists(cpg_path):print("未找到CPG文件,创建CPG文件指定编码为GBK")with open(cpg_path, 'w') as f:f.write("GBK")else:# 读取现有CPG文件内容with open(cpg_path, 'r') as f:encoding = f.read().strip()print(f"检测到CPG文件,编码为: {encoding}")# 读取CPG文件获取编码with open(cpg_path, 'r') as f:encoding = f.read().strip()print(f"使用编码 {encoding} 读取Shapefile")# 使用CPG中指定的编码读取Shapefilegdf = gpd.read_file(shp_path, encoding=encoding)# 检查坐标系if gdf.crs is None:print("警告: 未检测到坐标系,尝试从 .prj 文件解析")# 尝试从 .prj 文件读取坐标系prj_path = shp_path.replace('.shp', '.prj')if os.path.exists(prj_path):with open(prj_path, 'r') as f:prj_text = f.read()try:crs = CRS.from_wkt(prj_text)gdf.set_crs(crs, inplace=True)print(f"从 .prj 文件解析坐标系: {crs.name}")except Exception as e:print(f"解析 .prj 文件失败: {str(e)}")# 假设为北京54投影坐标系gdf.set_crs("+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs", inplace=True)print("已设置为默认北京54投影坐标系(3度带,中央经线117°)")else:# 假设为北京54投影坐标系gdf.set_crs("+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 +ellps=krass +units=m +no_defs", inplace=True)print("未找到 .prj 文件,已设置为默认北京54投影坐标系(3度带,中央经线117°)")# 输出原始坐标系信息print(f"原始坐标系: {gdf.crs}")# 转换为 WGS84 坐标系 (EPSG:4326)if gdf.crs.to_epsg() != 4326:print("转换坐标系为 WGS84 (EPSG:4326)")gdf = gdf.to_crs(epsg=4326)# 处理二进制数据for col in gdf.columns:if col == 'geometry':continue# 处理bytes类型数据gdf[col] = gdf[col].apply(lambda x: x.decode(encoding, errors='replace') if isinstance(x, bytes) else str(x) if x is not None else None)# 转换为 GeoJSON - 移除不支持的force_ascii参数geojson_str = gdf.to_json()geojson_data = json.loads(geojson_str)# 保存 GeoJSON 文件,添加 BOM 标记with codecs.open(output_path, 'w', encoding='utf-8-sig') as f:json.dump(geojson_data, f, ensure_ascii=False, indent=2)print(f"成功转换并保存到: {output_path}")print(f"使用 UTF-8 with BOM 编码保存,确保中文正确显示")return Trueexcept Exception as e:print(f"转换失败: {str(e)}")import tracebacktraceback.print_exc()return Falseif __name__ == "__main__":# 设置 Shapefile 文件夹路径shp_folder = r"你的路径"output_folder = r"你的路径"# 确保输出文件夹存在os.makedirs(output_folder, exist_ok=True)# 获取所有 .shp 文件shp_files = [f for f in os.listdir(shp_folder) if f.endswith('.shp')]print(f"找到 {len(shp_files)} 个 Shapefile 文件")# 转换每个文件for shp_file in shp_files:shp_path = os.path.join(shp_folder, shp_file)output_path = os.path.join(output_folder, shp_file.replace('.shp', '.geojson'))convert_shp_to_geojson(shp_path, output_path)

http://www.dtcms.com/wzjs/396015.html

相关文章:

  • 重庆市网站推广关键词推广方式
  • 如何做慕课网站关键词seo优化排名公司
  • 如何做地方网站推广合肥网站推广优化公司
  • 摄影网站模板seo网络推广专员
  • wordpress恢复到昨天google seo 优化招聘
  • 网站栏目做跳转关键词推广优化app
  • 什么网站建设最便宜广东深圳疫情最新
  • 做视频网站侵权吗渠道网络
  • 网站seo置顶 乐云践新专家中美关系最新消息
  • 怎么做视频解析网站中国网新山东
  • 鲜花店的网站建设长沙seo排名扣费
  • wordpress lofter插件seo自动优化工具
  • html 网站开发知乎关键词排名优化
  • wordpress阿里云图片不显示seo岗位
  • ps如何做游戏模板下载网站网站更换服务器对seo的影响
  • 上海网站建设公司招人百度app打开
  • 用jquery做网站好吗企业营销策略
  • 关于网络营销的网站今日头条热搜榜前十名
  • 无锡网站推广$做下拉去118cr电商平台推广方案
  • 网站建设需要的图片怎么弄信息流优化师是干什么的
  • pc网站做移动适配软文营销的五个步骤
  • 百度云建设网站百度网页版
  • 做mro的b2b网站百度广告推广费用
  • 通过php获取手机网站访客的手机号码免费网页在线客服系统代码
  • 上海松江网站建设公司提升关键词排名有哪些方法
  • 大收录量的网站怎么做谷歌优化培训
  • 合肥今天的最新消息廊坊seo快速排名
  • c程序设计课程网站建设论文百度推广代理商
  • 国内erp软件公司排名广州seo网站优化培训
  • 动态网站开发pdf企业seo排名有 名