I am using R to do spatial analysis. I have a river shapefile spanning most of the northern Northern Hemisphere (north of about 50 deg). I am hoping to buffer each river segment by its width in meters. However, the data is currently in WGS84 (aka ESPG 4326), which is lat/lon. The buffer function uses an input distance of whatever the projection is in (if it helps, I am using the 'sf' package's st_buffer function), so I need the projection to also be in meters.

Is there a projection that doesn't distort distances too much that could be used fairly well for latitudes over 50 deg North?

I apologize if this has been asked before. I haven't seen quite the same question, but it is possible that I missed it!

closed as primarily opinion-based by Vince, aldo_tapia, whyzar, xunilk, Kersten Jan 24 '18 at 10:30

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Albers Equal Area Conic shouldn't distort much of the distances you are hoping for I guess. – Vijay Ramesh Jan 23 '18 at 17:05
  • 1
    You could use a different projection for each river, picking one appropriate for the river's lat-long, do the buffer, then transform back to lat-long and merge all the rivers back... – Spacedman Jan 23 '18 at 17:49
  • Do you know of an automatic way or doing that based on a given set of lat/lon coordinates (or something like that)? I have a lot of rivers, so I think it might be challenging/impossible to manually do it for each one. – Ana Jan 23 '18 at 17:57
  • There are a lot of potentional projections available at any given area of the Earth, and a near infinite number of possible projection parameters. The extent and orientation would also play a factor. It's difficult to recommend a single projection without drifting into an opinion-based answer. – Vince Jan 23 '18 at 21:01
  • 1
    You could construct an azimuthal projection centred on the centre of the river's extent. Whether its worth the extra effort over a single projection though. Maybe try one or two rivers and compare? – Spacedman Jan 23 '18 at 22:18

Lambert conformal conic projection would probably be the best way to go. For an entire hemisphere, you would actually want to use a polar stereographic projection (such as EPSG 3995), which would minimize distortion at and around the actual pole. It would also be the most accurate in measuring distances.

With that being said, it would lead to a lot of distortion in viewing the map, as compared to typical map projections. You also probably don't have many rivers right around the North Pole, so that point is moot. Lambert conformal conic (such as EPSG 102009) would provide accuracy and measurements in meters for easier analysis. If you need to assign the geometry as text, you could designate as +proj=lcc +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m no_defs, or just st_set_crs(102009).

  • That is really helpful, thank you! Out of curiosity, is there any reason you use st_set_crs as opposed to st_transform? – Ana Jan 23 '18 at 20:59
  • Only that it's a quicker and easier way with an EPSG code, but potentially more prone to error. The "standard" approach is defining a crs variable, then using that in the st_transform() method. If that's what you're used to I would continue using that approach - it also makes it easier to transform other datasets, if you're working with many. By the way feel free to upvote or mark as correct if you think this answers your question. – AlecZ Jan 23 '18 at 21:10

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