0
私はPythonを使い始めました。 Postgresには次の表があります。これらは私がPythonのデータフレームにこのデータを格納しているZONE
名前と同じId
を持つ4つの座標を持つポリゴンの値は、私がLon
とLat
値を持つJSONデータを持っていると私はそれらを保存しているdf1
パンダのデータフレームで最も近い点を見つけよう
Id Order Lat Lon Zone
00001 1 50.6373473 3.075029928 A
00001 2 50.63740441 3.075068636 A
00001 3 50.63744285 3.074951754 A
00001 4 50.63737839 3.074913884 A
00002 1 50.6376054 3.0750528 B
00002 2 50.6375896 3.0751209 B
00002 3 50.6374239 3.0750246 B
00002 4 50.6374404 3.0749554 B
と呼ばれるPythonのデータフレームがdf2
と呼ばれています。
Lat Lon
50.6375524099 3.07507914474
50.6375714407 3.07508201591
私のタスクは、ゾーン名を抽出しdf2
に追加しdf1
で各ゾーンの4点の座標でdf2
Lat
とLon
値を比較することです。
たとえば(50.637552409 3.07507914474)
はZone B
に属します。
#This is ID with Zone
df1 = pd.read_sql_query("""SELECT * from "zmap" """,con=engine)
#This is with lat,lon values
df2 = pd.read_sql_query("""SELECT * from "E1" """,con=engine)
df2['latlon'] = zip(df2.lat, df2.lon)
zones = [
["A", [[50.637347297, 3.075029928], [50.637404408, 3.075068636], [50.637442847, 3.074951754],[50.637378390, 3.074913884]]]]
for i in range(0, len(zones)): # for each zone points
X = mplPath.Path(np.array(zones[i][1]))
# find if points are Zones
Y= X.contains_points(df2.latlon.values.tolist())
# Label points that are in the current zone
df2[Y, 'zone'] = zones[i][0]
現在、私はZone 'A'のために手動で行っています。私はdf2の座標の "ゾーン"を生成する必要があります。
申し訳ありませんが、SOはチュートリアルまたはフリーコード作成サイトではありません。最初に試してみてください。 – Julien