Nếu các crs của GeoDataFrame được biết đến (EPSG: 4326 đơn vị = độ, ở đây), bạn không cần Shapely, cũng không phải pyproj trong tập lệnh của mình vì GeoPandas sử dụng chúng).
import geopandas as gpd
test = gpd.read_file("test_wgs84.shp")
print test.crs
test.head(2)
Bây giờ hãy sao chép GeoDataFrame của bạn và thay đổi phép chiếu sang hệ thống Cartesian (EPSG: 3857, unit = m như trong câu trả lời của ResMar)
tost = test.copy()
tost= tost.to_crs({'init': 'epsg:3857'})
print tost.crs
tost.head(2)
Bây giờ diện tích bằng km vuông
tost["area"] = tost['geometry'].area/ 10**6
tost.head(2)
Nhưng các bề mặt trong phép chiếu Mercator là không chính xác, do đó, với các phép chiếu khác tính bằng mét.
tost= tost.to_crs({'init': 'epsg:32633'})
tost["area"] = tost['geometry'].area/ 10**6
tost.head(2)
epsg:3857
, nhưng mã của bạn làepsg:3395
, cái nào trong hai cái này là đúng?