Hacker News new | past | comments | ask | show | jobs | submit login
Pretty maps in Python (marksblogg.com)
301 points by todsacerdoti on July 20, 2022 | hide | past | favorite | 21 comments



Making maps without an external service on macOS is an exercise in dependency hell.

About once a month, I have to run a script I wrote that generates a list of lat/lon values from company data to generate maps in python. I have to keep a separate machine on an old version of macOS just for this task because python3 broke everything.

ALL of the tutorials online are out of date, broken, or simply don't work. I even contacted the people at Geofabrik and offered to pay them for a solution, but they wouldn't touch the problem with a ten meter cattle prod.

I guess I'll spin up an Ubuntu VM and see if this solution works for me. But the state of mapping is abysmal. Everything is an online service or a GUI. And none of the online services can do batch processing.


R and Python both have state of the art mapping tools and libraries that you can either script or use interactively in a notebook to accomplish literally any conceivable task using vector or raster data, from a simple choropleth map to geographically weighted regression to analysing satellite imagery using pre-trained models. Making publication-quality maps using point data is absolutely trivial, and there are a number of high-quality learning resources available (https://geo-python.github.io/site/, https://automating-gis-processes.github.io/site/)

I started working with spatial data on the Mac platform before Python 3 had gained much traction, and I can assure you that Python 3 really didn’t break much to speak of. Every major library and tool works as well as ever, and in most cases is vastly improved.


I think we have very different definitions of trivial


In the context of Hacker News and the parent comment’s lack of interest in GUI-based tools, I’m pretty confident in my definition.


I never trust a “trivial” on HN.


Another option for you to try: I recently used https://pypi.org/project/py-staticmaps/ to generate maps in Python 3 on my Mac, and even got the Cairo option working. My script to generate maps for state and country capitals: https://github.com/pamelafox/chrome-cards/blob/master/genera...


Staticmaps is great! I've used it to generate a map of our area pointing out where the BBQ area is for guests, I've used it to generate maps of bike rides and hikes I go on, it's really fun. Definitely needs a bit of light GIS knowledge but nothing someone with decent Python skills and a free-ish weekend can't pick up.


I had absolutely zero trouble on Windows 10/Ubuntu 22.04 a couple weeks ago doing mapping. I downloaded the JSON location data from my Google account and this is what I ended up with: cartopy + matplotlib + shapely.

I believe the examples for cartopy mostly work out of the box.

Can't speak for Mac OS but I assume all those are conda-installable there as well.


What's your source data? I am currently working on standalone map renderer written in Nim. My source data is are vector tiles and it works reasonably well...


Weird. I've had no issues on several recent versions of Mac. I use Brew to manage the base, add gcc, and use virtual environments. No issues whatsoever.


Cool, got it working. Spews a fair number of warning to stdout though. A few dozen of:

/home/bill/.pretty/lib/python3.10/site-packages/prettymaps/fetch.py:317: ShapelyDeprecationWarning: __len__ for multi-part geometries is deprecated and will be removed in Shapely 2.0. Check the length of the `geoms` property instead to get the number of parts of a multi-part geometry. list(lines) /home/bill/.pretty/lib/python3.10/site-packages/prettymaps/fetch.py:317: ShapelyDeprecationWarning: Iteration over multi-part geometries is deprecated and will be removed in Shapely 2.0. Use the `geoms` property to access the constituent parts of a multi-part geometry. list(lines)


Funnily enough, I came across this library a few weeks ago and made a PR to set the right version of the library that throws the errors. If you incorporate this, these will likely all disappear.


Worth noting the reaction* of some NFT seller who was outed as using this library.

* https://github.com/marceloprates/prettymaps/blob/main/etc/NF...


I wanted an excuse to make my first replit so I added it here: https://replit.com/@cameron-p-m/PrettyMap

Let me know what it's like running it!



Looks like it died, guess a few too many people tried to run it at once.


I played around with this library a few months ago and it is an absolute joy to use if you like maps.


What kind of use cases? I have found mapping software in python mostly to be labor intensive and not highly functional


For me it was strictly personal use. For example, I made a series of maps for stadiums for teams in the EFL Championship to use as wallpaper when my club has away matches. I also made some for my hometown and for the universities where my kids are studying.


Link to the HN discussion mentioned in the article: https://news.ycombinator.com/item?id=28300951 (982 points | 10 months ago | 74 comments)


the online site.... for address you can take lat/lon from open street map and put that instead of trying to pass it a postal address. eg 40.97315, -77.69783




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: