ToB企服应用市场:ToB评测及商务社交产业平台
标题:
the-ONE 模拟器的使用 osm转换wkt
[打印本页]
作者:
美丽的神话
时间:
2024-7-10 01:37
标题:
the-ONE 模拟器的使用 osm转换wkt
处置处罚osm数据
目次
处置处罚osm数据
1.使用网站进行处置处罚
获得地图数据
将导出的文件转化为csv格式
对数据进行处置处罚
2.使用osm2wkt进行处置处罚
使用osm2wkt对导出的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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4