处置处罚osm数据
目次
1.使用网站进行处置处罚
获得地图数据
通过https://www.openstreetmap.org/ 搜寻想要的地图,选择想要的区域,导出osm格式文件
将导出的文件转化为csv格式
将导出的文件上传到MyGeodata Cloud - GIS Data Warehouse, Converter, Maps网站上面,将文件转换为csv格式
对数据进行处置处罚
导出来的wkt文件,现实显示的是csv格式的文件,但是导出的文件中的数据,不满足我们对the One 模拟器导入地图数据的需求
我们现实须要的只有第一列数据(除第一行的数据),全部我们须要把全部数据给进行处置处罚,而且为了满足使用需求,还需将POLYGON中的数据进行放大,放大到原来的100000倍
我个人对文件的是使用python脚本进行实现的,以下是实现的代码- import pandas as pd
- import os
- import re
- import shutil
- def process_files(directory):
- for filename in os.listdir(directory):
- if filename.endswith(".csv"): # 只处理.csv文件
- with open(os.path.join(directory, filename), 'r+') as file:
- content = file.read()
- content = content.replace('"', '') # 删除所有引号
- file.seek(0) # 将文件指针移回文件开头
- file.write(content) # 覆盖原文件
- file.truncate() # 删除原文件中未覆盖的部分
- def transori(directory):
- for filename in os.listdir(directory):
- if filename.endswith('.csv'):
- file_path = os.path.join(directory, filename)
- df = pd.read_csv(file_path, skiprows=[0])
- df = df[df.columns[0]].to_frame()
- df.to_csv(file_path, index=False, header=False)
- def transwkt(directory):
- for dirpath, dirnames, filenames in os.walk(directory):
- for filename in filenames:
- if filename.endswith('.csv'):
- base = os.path.splitext(filename)[0]
- shutil.move(os.path.join(dirpath, filename), os.path.join(dirpath, base + '.wkt'))
- def trans100000(directory):
- files = [f for f in os.listdir(directory) if f.endswith('.wkt')]
- for file in files:
- with open(os.path.join(directory, file), 'r') as f:
- data = f.read()
- coordinates = re.findall(r'(\d+\.\d+ \d+\.\d+)', data)
- mapping = {}
- for coordinate in coordinates:
- x, y = map(float, coordinate.split())
- mapping[coordinate] = f"{x * 100000} {y * 100000}"
- for original, new in mapping.items():
- data = data.replace(original, new)
- with open(os.path.join(directory, file), 'w') as f:
- f.write(data)
- def out_put(directory):
- output_list = []
- for i, filename in enumerate(os.listdir(directory), start=1):
- if filename.endswith('.wkt'):
- filepath = os.path.join(directory, filename)
- output_str = f'MapBasedMovement.mapFile{i} = {filepath}'
- output_list.append(output_str)
- for line in output_list:
- print(line)
- # 使用函数
- #directory 设置为你存放数据文件的目录
- directory = '../data/mygeodata'
- transori(directory)
- process_files(directory)
- transwkt(directory)
- trans100000(directory)
- out_put(directory)
复制代码 2.使用osm2wkt进行处置处罚
使用osm2wkt对导出的osm进行处置处罚
下载地址(https://github.com/julianofischer/osm2wkt)
用之前的方法大概处置处罚完数据后会存在部门点未连通的情况,须要自己手动添加
但是用此软件可以对其数据的点进行,不连通的街道进行修复或删除,但是大概删除很多数据。
操作代码- java -jar ./osm2wkt.jar map.osm
复制代码 把你的osm文件放在 工具的文件夹下
总结
以上两种方法均能处置处罚数据,但是第二种方法对数据的处置处罚只能得到一个wkt文件,对the one 中限制车辆等事务的运行路线不方便,不能很好的模拟真真相况,第一种可以得到公路这种数据,不同的文件包罗不同的路线
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |