Pyprojを使用して、一点から複数の点の距離を求めたいと思っております。距離については、直線距離を求めるのではなく、ある一点から南北/東西方向にそれぞれどのくらいずれているのかという距離を求めています。
python
1import pandas as pd 2import pyproj 3 4df = pd.read_csv('file.csv') 5 6# lat1, lng1である一点の座標を決めておく 7lat1 = 緯度 8lng1 = 経度 9 10grs80 = pyproj.Geod(ellps='GRS80') 11 12for lat2 in list(df[1]): 13 azimuth, bkw_azimuth, distance = grs80.inv(lng1, lat1, lng1, lat2) 14for lng2 in list(df[2]): 15 azimuth, bkw_azimuth, distance = grs80.inv(lng1, lat1, lng2, lat1)
以上のようなコードをコンソール上で書きfor文で回すことで、距離自体は求められているのですが、これをクラスの中で使用し、以下のように変数にそれぞれself.とつけました。
Python
1self.df = pd.read_csv('file.csv') 2 3# lat1, lng1である一点の座標を決めておく 4self.lat1 = 緯度 5self.lng1 = 経度 6 7self.grs80 = pyproj.Geod(ellps='GRS80') 8 9for self.lat2 in list(self.df[1]): 10 self.proj_nums1 = self.grs80.inv(self.lng1, self.lat1, self.lng1, self.lat2) 11for self.lng2 in list(self.df[2]): 12 self.proj_nums2 = self.grs80.inv(self.lng1, self.lat1, self.lng2, self.lat1)
すると、
Python
1AttributeError: 'float' object has no attribute 'self'
というエラーが出てしまいます。このエラーは一つ目のfor文では出ず、二つ目のfor文で出てしまいます。一つ目のfor文をコメントアウトしてみても同じエラーが出ています。
緯度も経度もfloatなのだと思うのですが、なぜ二つ目のfor文でだけエラーが出てしまうのでしょうか?
ご教示いただけますと幸いです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー