arcpy高德爬取路况信息数据json转shp

2024-02-05 09:04

本文主要是介绍arcpy高德爬取路况信息数据json转shp,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近工作上遇到爬取的高德路况信息数据需要在地图上展示出来,由于json数据不具备直接可视化的能力,又联想到前两个月学习了一点点arcpy的知识,就花了一些时间去写了个代码,毕竟手动处理要了老命了。

1、json文件解读

json文件显示如下:

通过api和json组织结构解读,我们只需要道路的polyline坐标点空间信息,道路名称,道路方向、道路限速和道路拥堵程度等属性信息。

所以我们需要用python代码去获取roads数组内的信息

2、python代码编写

2.1、json文件读取

读取json文件需要线导入json模块,根据需要,我们还导入了arcpy等模块

import json
import os
import pandas as pd
import math
import csv
import arcpy
from arcpy import da
from arcpy import env
###打开json文件###
with open(jsonfile) as f:fileread=f.readline()jsondata=json.loads(fileread)print(jsondata)trafficinfo = jsondata['trafficinfo']for row in trafficinfo['roads']:name = row['name']status = row['status']direction = row['direction']angle = row['angle']if "speed" in trafficinfo:speed = row['speed']lcodes = row['lcodes']print ("--------------这里是坐标点的信息------------------------")points_data = row['polyline']points_data = points_data.split(";")#将polyline的坐标点循环遍历取出来for i in range(1,len(points_data)):print (i)print (points_data[i])oldLon = float(points_data[i].split(",")[0])oldLat = float(points_data[i].split(",")[1])lon = gcj02_to_wgs84(oldLon,oldLat)[0]lat = gcj02_to_wgs84(oldLon,oldLat)[1]pnt = arcpy.Point(lon,lat)array.add(pnt)polyline = arcpy.Polyline(array,cgcs2000project)array.removeAll()newFields = [polyline,name,status,direction,angle,speed,lcodes,polyline.length]cur.insertRow(newFields)del cur    f.close

2.2、创建shp数据

###创建shp文件###
print ("创建shp")
#创建一个空白的线要素
arcpy.CreateFeatureclass_management(os.path.dirname(shp_output),os.path.basename(shp_output),'POLYLINE',"","","",cgcs2000project)
#给shp添加字段属性
arcpy.AddField_management(shp_output,'name','Text')
arcpy.AddField_management(shp_output,'status','Text')
arcpy.AddField_management(shp_output,"direction",'Text')
arcpy.AddField_management(shp_output,'angle','Text')
arcpy.AddField_management(shp_output,"speed",'Text')
arcpy.AddField_management(shp_output,"lcodes",'Text')
arcpy.AddField_management(shp_output,"Length",'Double')
fields =['SHAPE@',"name", "status", "direction", "angle", "speed", "lcodes",'Length']
#插入行
cur = da.InsertCursor(shp_output,fields)

其中outputpath 是输出文件夹路径,
jsonfile是json文件路径
shp_output是输出的文件名称
cgcs2000project是坐标参照

2.3、坐标转换

由于高德数据是火星坐标系,我们需要对坐标点进行坐标系转换,将火星坐标系转为CGCS2000坐标系,转换代码在这:

3、转换后效果

这篇关于arcpy高德爬取路况信息数据json转shp的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680409

相关文章

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添