3

Is there a canonical way of projecting a set of points (for example, originally given in WGS84 latitudes/longitudes) into a planar approximation centered on a particular (latitude, longitude) pair and measured in km?

I've basically being doing some changes of coordinates by hand to get ball- and hexagon- shaped neighborhoods with a measurements given in km, but it seems simpler to have a local distortion and deal in planar (km x km) coordinates.

I'm not including any equations because I'm hoping this is a standard "named" CRS family. The Geopandas documentation claims it accepts proj.4 strings.

  • it sounds like you want the azimuthal equidistant projection. e.g. for the center of bradford county pa usa, proj4 would be +proj=aeqd +lat_0=41.803075 +lon_0=-76.497785 – Richard DiSalvo Nov 23 '19 at 22:48
3

The following script take the world data that ships with GeoPandas, finds the centroids of each country, and projects those points onto a meters-based projection. The projection I chose is US National Atlas Equal Area, which is EPSG 2163. On that site you can find another projected CRS, like one of the UTM zones.

%matplotlib inline  # if you want to view the output in a Jupyter notebook
import geopandas as gpd

# read in the world data
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

# the example at http://geopandas.org/projections.html#re-projecting
# recommends removing Antarctica
world = world[(world.name != "Antarctica") & (world.name != "Fr. S. Antarctic Lands")]

# the current CRS is WGS84 (EPSG 4326)
print(world.crs)

# find the centroid points for each of the world's countries
world['centroid_column'] = world.centroid

# change the CRS
countries = world.set_geometry('centroid_column').to_crs({'init': 'epsg:2163'})

Looking at a plot of the world.plot() data shows the world with units of degrees:

enter image description here

A view of the re-projected country centroids with `countries.plot() shows the points with units of meters:

enter image description here

1

One possible answer is choosing one of the UTM frames, which have northings and eastings denominated in meters.

https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system

A limitation of this approach is having to select one of the partitions of Earth defined by the UTM standard, but at least in my application this is unlikely to be a problem.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.