怎么我可以提取x、y和z坐标从地理数据的蟒蛇?
-
20-08-2019 - |
题
我有地理数据,其中有14个变量。数据是在以下格式:
QUADNAME:rockport_colony_SD决议:10ULLAT:43.625
ULLON:-97.87527466LRLAT:43.5
LRLON:-97.75027466HDATUM:27
ZMIN:361.58401489有:413.38400269ZMEAN:396.1293335ZSIGMA:12.36359215PMETHOD:5
QUADDATE:20001001
整个数据以前的许多变量的序列。
怎么我可以提取的坐标ULLAT,ULLON和LRLAT从数据到三个列表,因此,每个行对应于一个位置?
这个问题提出了问题 后.
解决方案
如果数据是像这样的东西可能工作都在一个大的纯文本文件:
import re
data = """
QUADNAME: rockport_colony_SD RESOLUTION: 10 ULLAT: 43.625
ULLON: -97.87527466 LRLAT: 43.5
LRLON: -97.75027466 HDATUM: 27
ZMIN: 361.58401489 ZMAX: 413.38400269 ZMEAN: 396.1293335 ZSIGMA: 12.36359215 PMETHOD: 5
QUADDATE: 20001001
"""
regex = re.compile(
r"""ULLAT:\ (?P<ullat>-?[\d.]+).*?
ULLON:\ (?P<ullon>-?[\d.]+).*?
LRLAT:\ (?P<lrlat>-?[\d.]+)""", re.DOTALL|re.VERBOSE)
print regex.findall(data) # Yields: [('43.625', '-97.87527466', '43.5')]
其他提示
给定一个的StreamReader 命名的读者,这应该给你一个(浮动,浮动,浮动)的列表。我建议的3元组列表,因为它很可能会更方便,更有效地穿行,除非出于某种原因,你只需要单独获得所有的点。
coords = []
reader
while line=reader.readline():
index_ullat = line.find("ULLAT")
if index_ullat >= 0:
ullat = float(line[ index_ULLAT+7 : ])
line = reader.readline()
index_ullon = line.find("ULLON")
index_lrlat = line.find("LRLAT")
if index_ullon >= 0 and index_lrlat >= 0:
ullon = float(line[ index_ullon+7 : index_lrlat-1 ])
lrlat = float(line[ index_lrlat+7 : ])
else:
raise InputError, "ULLON and LRLAT didn't follow ULLAT."
coords.append(ullat, ullon, lrlat)
这可能工作,但它的丑陋。我在字符串分析方面的专家。
不隶属于 StackOverflow