Python으로 지리적 데이터에서 x, y 및 z 좌표를 추출하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/489901

  •  20-08-2019
  •  | 
  •  

문제

14 개의 변수가있는 지리적 데이터가 있습니다. 데이터는 다음과 같은 형식입니다.

Quadname : rockport_colony_sd 해상도 : 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
사분면 : 20001001

전체 데이터에는 순서에 많은 이전 변수가 있습니다.

각 행이 한 위치에 해당하도록 조정 Ullat, Ullon 및 LRLAT를 3 개의 목록으로 추출하려면 어떻게해야합니까?

이 질문은 문제에 의해 제기되었습니다 게시물.

도움이 되었습니까?

해결책

데이터가 모두 큰 플랫 텍스트 파일에 있으면 이와 같은 것이 작동 할 수 있습니다.

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')]

다른 팁

주어진 a 스트림 리더 명명 된 독자, 이것은 당신에게 (float, float, float) 목록을 제공해야합니다. 어떤 이유로 든 모든 포인트 만 개별적으로 얻고 싶지 않다면, 걸어 다니는 것이 더 편리하고 효율적 일 것입니다.

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)

효과가있을 수 있지만 추악합니다. 나는 String Parsing의 전문가가 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top