|
|
import re
|
|
|
import random
|
|
|
|
|
|
def generate_valid_latitude():
|
|
|
# 生成有效的纬度坐标 (0°-90°)
|
|
|
latitude_degree = random.randint(0, 90)
|
|
|
latitude_minute = random.randint(0, 59)
|
|
|
latitude_second = random.randint(0, 59)
|
|
|
latitude_direction = random.choice(['N', 'S'])
|
|
|
return f"{latitude_degree}°{latitude_minute}′{latitude_second}″{latitude_direction}"
|
|
|
|
|
|
def generate_valid_longitude():
|
|
|
# 生成有效的经度坐标 (0°-180°)
|
|
|
longitude_degree = random.randint(0, 180)
|
|
|
longitude_minute = random.randint(0, 59)
|
|
|
longitude_second = random.randint(0, 59)
|
|
|
longitude_direction = random.choice(['E', 'W'])
|
|
|
return f"{longitude_degree}°{longitude_minute}′{longitude_second}″{longitude_direction}"
|
|
|
|
|
|
def generate_invalid_latitude():
|
|
|
# 生成错误的纬度坐标 (超过90°或负值)
|
|
|
latitude_degree = random.randint(91, 180)
|
|
|
latitude_minute = random.randint(0, 59)
|
|
|
latitude_second = random.randint(0, 59)
|
|
|
latitude_direction = random.choice(['N', 'S'])
|
|
|
return f"{latitude_degree}°{latitude_minute}′{latitude_second}″{latitude_direction}"
|
|
|
|
|
|
def generate_invalid_longitude():
|
|
|
# 生成错误的经度坐标 (超过180°或负值)
|
|
|
longitude_degree = random.randint(181, 360)
|
|
|
longitude_minute = random.randint(0, 59)
|
|
|
longitude_second = random.randint(0, 59)
|
|
|
longitude_direction = random.choice(['E', 'W'])
|
|
|
return f"{longitude_degree}°{longitude_minute}′{longitude_second}″{longitude_direction}"
|
|
|
|
|
|
def generate_invalid_coordinate():
|
|
|
# 随机决定生成哪种类型的错误坐标
|
|
|
if random.choice([True, False]):
|
|
|
# 纬度正确,经度错误
|
|
|
return f"{generate_valid_latitude()},{generate_invalid_longitude()}"
|
|
|
else:
|
|
|
# 纬度错误,经度正确
|
|
|
return f"{generate_invalid_latitude()},{generate_valid_longitude()}"
|
|
|
|
|
|
def insert_invalid_coordinates(file_path, num_invalid_coords):
|
|
|
# 读取文件内容
|
|
|
with open(file_path, 'r', encoding='utf-8') as file:
|
|
|
original_content = file.read()
|
|
|
|
|
|
# 正则表达式匹配现有的经纬度坐标
|
|
|
pattern = r'(\d{1,2}°[0-5]?\d′[0-5]?\d″[NS]),(\d{1,3}°[0-5]?\d′[0-5]?\d″[WE])'
|
|
|
matches = re.findall(pattern, original_content)
|
|
|
|
|
|
# 将现有的坐标转换为字符串列表
|
|
|
valid_coords = [f"{match[0]},{match[1]}" for match in matches]
|
|
|
|
|
|
# 生成并插入错误坐标
|
|
|
invalid_coords = [generate_invalid_coordinate() for _ in range(num_invalid_coords)]
|
|
|
all_coords = valid_coords + invalid_coords
|
|
|
|
|
|
# 打乱所有坐标的顺序
|
|
|
random.shuffle(all_coords)
|
|
|
|
|
|
# 写回文件
|
|
|
with open(file_path, 'w', encoding='utf-8') as file:
|
|
|
file.write("\n".join(all_coords))
|
|
|
|
|
|
# 指定文件路径和要插入的错误坐标数量
|
|
|
file_path = r"E:\_Ufo\000jiegou\TheBattleCar\coordinate.txt"
|
|
|
num_invalid_coords = 1000
|
|
|
|
|
|
# 插入错误坐标
|
|
|
insert_invalid_coordinates(file_path, num_invalid_coords)
|
|
|
|
|
|
print(f"已成功将 {num_invalid_coords} 个错误坐标插入到 {file_path} 文件中。") |