Сценарий Python завершается с координатами (широта, долгота) из-за аргумента 2 типа 'double' - PullRequest
0 голосов
/ 13 апреля 2020

Я строю точки, используя ogr в Python (Python 3!), И это прекрасно работает, если я ввожу свои координаты в код в виде чисел, но следующий код завершится неудачно, если я попытаюсь использовать координаты из CSV-файл.

Рабочий код:

from osgeo import ogr

point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(40.729047, -73.957472)
print(point.ExportToWkt())

Код, который ломается:

from osgeo import ogr

datatest = pd.read_csv('data.csv')

p1_lat, p1_lon = datatest['POINT1_LAT'], datatest['POINT1_LON']

point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(p1_lat, p1_lon)
print(point.ExportToWkt())

Второй пример завершается ошибкой TypeError: in method 'Geometry_AddPoint', argument 2 of type 'double'

Что я делаю неправильно и как я могу это исправить, чтобы код мог вызывать координаты из моего CSV-файла? Спасибо.

РЕДАКТИРОВАТЬ: по запросу, если я печатаю две переменные, я получаю:

0    40.729047
Name: POINT1_LAT, dtype: float64
0   -73.957472
Name: POINT1_LON, dtype: float64

РЕДАКТИРОВАТЬ2: Это Python 3

1 Ответ

1 голос
/ 13 апреля 2020

Вы добавляете pandas фреймы данных с AddPoint вместо float.

import pandas as pd

pts = pd.DataFrame({'p': [3.4532], 'q' : [5.674]})

print(pts['p'])
print(pts['q'])

print(float(pts['p'][0]))
print(float(pts['q'][0]))
0    3.4532
Name: p, dtype: float64
0    5.674
Name: q, dtype: float64
3.4532
5.674

Это должно работать: -

from osgeo import ogr

datatest = pd.read_csv('data.csv')

p1_lat, p1_lon = datatest['POINT1_LAT'], datatest['POINT1_LON']
p1_lat = float(p1_lat[0])
p1_lon = float(p1_lon[0])

point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(p1_lat, p1_lon)
print(point.ExportToWkt())
...