2013-06-23 1 views
0

안녕하세요 다음 코드가 있습니다.값을 전달하고이 함수를 사용하는 방법

import csv 
import math 

EASTING_BASE = 500 
NORTHING_BASE = 500 

def main(): 
    global NORTHING_BASE 
    global EASTING_BASE 

    for i, a in getStationCoords(): 
     statione = int(i) 
     stationn = int(a) 
     print statione,stationn 

    stationEasting = int(getStationCoords()[0][0]) 
    stationNorthing = int(getStationCoords()[0][1]) 

    for i in range(0, len(eastingList)): 
     print "Co-ordinates (" + str(eastingList[i]) + "," + str(northingList[i]) + ")" 
     print calculateDistance(NORTHING_BASE, EASTING_BASE, northingList[i], eastingList[i]) 
     print calculateBearing(NORTHING_BASE, EASTING_BASE, northingList[i], eastingList[i]) 


def getStationCoords(): 
    listStation = [] 
    a_reader = None 
    a_reader  = open('data.csv', 'rU') 
    a_csv_reader = csv.reader(a_reader) 
    a_csv_reader.next() 
    for i in [row[-2:] for row in a_csv_reader]: 
    listStation.append(i) 
    a_reader.close() 

    count = 0 
    sum = 0.0 
    a_reader  = open('data.csv', 'rU') 
    a_csv_reader = csv.reader(a_reader) 

    #for row in a_csv_reader: 
    #  if count != 0 and row[0] != '': 
     #   sum = sum + float(row[0]) 
     #  count = count + 1 


    #print 'Number of lines is:',count 
    #print 'Sum is:',sum 

    return listStation 

def main2(): 

    global NORTHING_BASE 
    global EASTING_BASE 

    eastingList = [] 
    northingList = [] 

    def calculateDistance(northingOne, eastingOne, northingTwo, eastingTwo): 
    # Determine differences in eastings and northings 
    deltaEasting = eastingTwo - eastingOne 
    deltaNorthing = northingTwo - northingOne 

    # We don't need to worry about +/- as using pythag below 
    distance = (deltaEasting **2 + deltaNorthing **2) **0.5 

    # Return the value for distance 
    return distance 

def calculateBearing(northingOne, eastingOne, northingTwo, eastingTwo): 
    diffEasting = eastingTwo - eastingOne 
    diffNorthing = northingTwo - northingOne 

    # Work out if in QI/II or QIII/IV 
    if diffEasting >= 0: 
     # This is in QI/II 
     if diffNorthing >0: 
      # This is in QI 
      bearing = math.atan(diffEasting/diffNorthing) 
     else: 
      # This is in QII 
      bearing = math.pi - math.atan(diffEasting/abs(diffNorthing)) 
    else: 
     # This is in QIII/IV 
     if diffNorthing >0: 
      # This is in QIV 
      bearing = 2 * math.pi - math.atan(abs(diffEasting)/diffNorthing) 
     else: 
      # This is in QIII 
      bearing = math.pi + math.atan(abs(diffEasting)/abs(diffNorthing)) 

    # Return the value 
    return bearing 


main2() 
main() 

좋아, 그럼 내가 easting 및 northing 목록에 값을 배치해야합니다. 이하. 내 첫 main 함수는() 나는 끼 었어 다음

476050 7709929 
473971 7707713 
465676 7691097 
515612 7702192 
516655 7704405 
519788 7713255 
538466 7683341 

는 Y 좌표와 X 좌표 목록으로 Y 좌표 (왼쪽)과 X 좌표 (오른쪽)에 대한 이러한 값을 얻는 방법입니다 생산하고 있습니다. 사람이 내가 main2()에있는 easting 및 northing 목록으로 가져 오는 방법에 대해 완전히 확신 할 수 없기 때문에 누군가 도와 줄 수 있습니까?

easting에서 northing 및 easting 값을 호출하여 함수를 올바르게 구현하고 있습니다. 북쪽 목록?

어떤 도움

이 많이 감사합니다.

+0

그럼, 왼쪽에있는 모든 값을 별도의 목록에서 원하십니까? 그리고 오른쪽에있는 모든 사람들은 별도의 목록에 있습니까? – TerryA

+0

@Haidro 예 thats 그것하시기 바랍니다. 왼쪽에있는 모든 값을 eastlist = []에 넣고 오른쪽에있는 모든 값을 northlist = []로 할 수 있습니까?/여기서는 어디에서 구현합니까? – Newbie

+0

대답을 추가했습니다 – TerryA

답변

0

참고 : 당신은 zip() 사용할 수 있습니다

[['476050', '7709929'], ['473971', '7707713'], ['465676', '7691097'], ['515612', '7702192'], ['516655', '7704405'], ['519788', '7713255'], ['538466', '7683341']] 

:이 구현 어디

eastlist, northlist = [map(int, i) for i in zip(*getStationCoords())] 
print eastlist 
# [476050, 473971, 465676, 515612, 516655, 519788, 538466] 
print northlist 
# [7709929, 7707713, 7691097, 7702192, 7704405, 7713255, 7683341] 

전적으로 당신에게 달려있다, 당신은 코드를 작성하는 사람이기 때문에 나는 getStationCoords() 수익률을 가정입니다 : 피.

+0

감사합니다. @Haidro 이것이 완벽합니다. 이전에 값을 나눌 필요가 있다고 생각했지만 목록이 이미 존재하면 우편이 더 좋은 방법입니다. 너의 일과 너의 진흙탕을 사랑해. 고마워요 – Newbie

+0

메신저 그러나 목록에서 호출하여 구현하려고하는 문자열 및 int 작동하지 않으면 내가 사용하는 경우 -이 문제를 해결할 수있는 방법은 무엇입니까? – Newbie

+0

예. 목록의 문자열에서 어떻게 든 제거 할 수 있습니까? – Newbie