What's New in GeoJSON Text Sequences

A year and a half ago, I blogged about the publication of RFC 8142 and some of the small complications using sequences of GeoJSON texts delimited by ASCII record separators (RS, or \x1e). At the time there weren't any implementations other than Fiona, Tippecanoe, jq, and GNU parallel.

The situation is dramatically better this week, largely due to a blog post about non-standard GeoJSON sequences. Even Rouault has added a GeoJSONSeq driver for GDAL 2.4. This makes RFC 8142 a real thing for the open source GIS community. Once this version gets deployed widely, gigantic and unweildly GeoJSON feature collection blobs will be passé.

I've also written a new Python decoder and encoder for JSON text sequences based on my experiences in developing this feature for the Fiona library: https://pypi.org/project/jsonseq. I'm using language features only available in Python 3.5 or newer, type annotations in particular. It's been refreshing to not even think about Python 2 compatibility. If you wanted to use these classes in an older Python application, please vendor it. It's only a few lines of code and is pretty much complete. I learned a little more about the Python standard library's JSON decoder and encoder, too.

I tweeted a link to this post, which makes me feel like a tool, but it's a small price to pay towards burying multi-GB GeoJSON file sharing.

Conda-forge is a NumFOCUS Sponsored Project

From the announcement:

NumFOCUS is pleased to announce the newest addition to our fiscally sponsored projects: conda-forge.

Conda-forge builds and distributes software packages, specializing in the hard-to-build or unique packages that often arise in a scientific computing context. Conda-forge is community-driven and community-curated. This means that no package is too domain-specific and all packages undergo review to ensure quality and interoperability.

The conda-forge GitHub organization contains repositories of conda recipes. Thanks to some awesome continuous integration providers (AppVeyor, CircleCI and TravisCI), each repository, also known as a feedstock, automatically builds its own recipe in a clean and repeatable way on Windows, Linux and OSX.

Conda-forge packages include shapely, fiona, and rasterio.

Congratulations, Filipe and Phil!

Twitter Break

In the run up to releasing Rasterio 1.0 I used Twitter more than I had in the months before because how else are people going to find out about the project's big milestone? Since then I've tried to use it very little. Twitter users' obsession with egomaniacs like Trump and Musk is super irritating, and Twitter's efforts to make the site a safe space for horrible people like Alex Jones is digusting. I really don't want anything to do with it anymore.

I miss people who I followed on Twitter, though. Write a little more on your own sites, people. I promise I'll read.

Black Squirrel 2018


The last runners arriving at Lory State Park before the race

I finished in 2:26:04, number 130 of 317 finishers. This was 2 minutes and 40 seconds slower than my time in 2015. Considering how many workouts I missed in August while on vacation at sea level and the extra pounds I'm dragging around, I have to be content. I am content. I took it extra easy on the climb, descended quickly, and went not rapidly but steadily on the rolling trail to the finish. I'm definitely better at running now than I was 3 years ago, even if I'm not in quite as good form at the moment.

Congratulations to Frank Pipp, the winner at 1:32:03, and Ruth Waller-Liddle, the first woman at 1:52:43. More congratulations to Nick and the Gnarr Runners for executing another fun and well-run race.

I don't have another race on my calendar, but am inspired to find another in October or November.

Day 15

10 hours of sleep makes such a difference! The double vision that was creeping up on me yesterday is gone. I ran a lap of Pineridge and felt better than I have all week. I went to the Larimer County Farmers Market to score vegetables for pickling (cabbage, jalapeños, and carrots) and did a grocery shop to get the family all set for a long weekend of patio dining. My kids are also well rested and have been cheerfully doing their chores and getting ready for tomorrow's big adventure: bringing home some baby chickens.

Ruth will be home in 2 hours. I'm going to spend that time cooking and celebrating a new family record for successful solo parenting.

Day 14

It's the end of the 14th day of my 15-day solo parenting adventure, and I'm thoroughly worn out. Calgon, take me away!

Thank you, my amazing kids, and thank you, friends and strangers, for your kindness and generosity. I'll never forget.

Lessons of Event Data Format Design

Read https://www.tbray.org/ongoing/When/201x/2018/08/30/Event-Structure and follow the link to the "SEF theorem" https://github.com/inlined/versioningishard/ if you're into data format design. Everything about this blog post applies equally well to the spatial data domain. If you've ever encountered GeoJSON features with styling directives mixed in with other feature attributes, you've witnessed the problem of trying to make unstructured GeoJSON data consistent with structured data (Shapefiles or whatever).