Я использую Pandas и PyProj для преобразования востока и севера в долготу и широту, а затем сохраняю разделенный вывод в 2 столбца, как это ....
v84 = Proj(proj="latlong",towgs84="0,0,0",ellps="WGS84")
v36 = Proj(proj="latlong", k=0.9996012717, ellps="airy",
towgs84="446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894")
vgrid = Proj(init="world:bng")
def convertLL(row):
easting = row['easting']
northing = row['northing']
vlon36, vlat36 = vgrid(easting, northing, inverse=True)
converted = transform(v36, v84, vlon36, vlat36)
row['longitude'] = converted[0]
row['latitude'] = converted[1]
return row
values = pd.read_csv("values.csv")
values = values.apply(convertLL, axis=1)
Это работает, но очень медленный и время ожидания для больших наборов данных. Пытаясь улучшить ситуацию, я пытаюсь преобразовать это, чтобы вместо этого использовать функцию lamba в надежде, что это ускорит процесс. У меня есть это пока ...
def convertLL(easting, northing):
vlon36, vlat36 = vgrid(easting, northing, inverse=True)
converted = transform(v36, v84, vlon36, vlat36)
row = row['longitude'] = converted[0]
return row
values ['longitude'] = values.apply(lambda row: convertLL(row['easting'], row['northing']), axis=1)
Эта преобразованная версия работает и работает быстрее, чем моя старая, и не имеет времени ожидания для больших наборов данных, но это работает только для долготы, есть ли способ чтобы заставить его работать с широтой?
Кроме того, это векторизовано? Могу ли я еще ускорить процесс?
EDIT
Образец данных ...
name | northing | easting | latitude | longitude
------------------------------------------------
tl1 | 378778 | 366746 | |
tl2 | 384732 | 364758 | |