Jika crs GeoDataFrame diketahui (EPSG: 4326 unit = degree, di sini), Anda tidak perlu Shapely, atau pyproj dalam skrip Anda karena GeoPandas menggunakannya).
import geopandas as gpd
test = gpd.read_file("test_wgs84.shp")
print test.crs
test.head(2)
![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/maWFG.png)
Sekarang salin GeoDataFrame Anda dan ubah proyeksi ke sistem Cartesian (EPSG: 3857, unit = m seperti pada jawaban ResMar)
tost = test.copy()
tost= tost.to_crs({'init': 'epsg:3857'})
print tost.crs
tost.head(2)
![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/RjDuR.png)
Sekarang area dalam kilometer persegi
tost["area"] = tost['geometry'].area/ 10**6
tost.head(2)
![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/Wf4Ys.png)
Tetapi permukaan dalam proyeksi Mercator tidak benar, demikian juga dengan proyeksi lainnya dalam meter.
tost= tost.to_crs({'init': 'epsg:32633'})
tost["area"] = tost['geometry'].area/ 10**6
tost.head(2)
![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/nzhEJ.png)
epsg:3857
, tetapi kode Anda benarepsg:3395
, mana di antara keduanya yang benar?