การทำงานกับระบบพิกัดใน GeoPandas

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

Joris Van den Bossche

Open source software developer and teacher, GeoPandas maintainer

ข้อมูล CRS ใน GeoPandas

แอตทริบิวต์ .crs ของ GeoDataFrame/GeoSeries:

import geopandas
gdf = geopandas.read_file("countries.shp")
print(gdf.crs)
{'init': 'epsg:4326'}
การทำงานกับข้อมูลเชิงพื้นที่ใน Python

การกำหนด CRS ด้วยตนเอง

gdf_noCRS = geopandas.read_file("countries_noCRS.shp")
print(gdf_noCRS.crs)
{}

เพิ่มข้อมูล CRS ให้กับ crs:

# Option 1
gdf.crs = {'init': 'epsg:4326'}

# Option 2
gdf.crs = {'proj': 'longlat', 'datum': 'WGS84', 'no_defs': True}
การทำงานกับข้อมูลเชิงพื้นที่ใน Python

การแปลงไปยัง CRS อื่น

import geopandas
gdf = geopandas.read_file("countries_web_mercator.shp")
print(gdf.crs)
{'init': 'epsg:3857', 'no_defs': True}

เมธอด to_crs():

# Option 1
gdf2 = gdf.to_crs({'proj': 'longlat', 'datum': 'WGS84', 'no_defs': True})

# Option 2 gdf2 = gdf.to_crs(epsg=4326)
การทำงานกับข้อมูลเชิงพื้นที่ใน Python

เหตุใดจึงต้องแปลง CRS?

1) แหล่งข้อมูลที่มี CRS ต่างกัน

df1 = geopandas.read_file(...)
df2 = geopandas.read_file(...)

df2 = df2.to_crs(df1.crs)
การทำงานกับข้อมูลเชิงพื้นที่ใน Python

เหตุใดจึงต้องแปลง CRS?

1) แหล่งข้อมูลที่มี CRS ต่างกัน

2) การแสดงแผนที่ (ความคลาดเคลื่อนของรูปร่างและระยะทาง)

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

เหตุใดจึงต้องแปลง CRS?

1) แหล่งข้อมูลที่มี CRS ต่างกัน

2) การแสดงแผนที่ (ความคลาดเคลื่อนของรูปร่างและระยะทาง)

3) การคำนวณระยะทาง / พื้นที่

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

จะเลือก CRS ที่เหมาะสมได้อย่างไร?

เคล็ดลับ:

  • เลือก projection ที่เหมาะกับพื้นที่ของข้อมูล
  • ส่วนใหญ่แต่ละประเทศมี CRS มาตรฐานของตนเอง

เว็บไซต์ที่มีประโยชน์:

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

สรุป

  • การแปลงไปยัง CRS อื่น: ใช้เมธอด to_crs()
  • ตรวจสอบให้แน่ใจว่าชุดข้อมูลต่าง ๆ ใช้ CRS เดียวกัน
  • เมื่อคำนวณระยะทาง พื้นที่ ฯลฯ -> ใช้ projected CRS

เว็บไซต์ที่มีประโยชน์:

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

มาฝึกกันเถอะ!

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

Preparing Video For Download...