Obscura Digital’s Installation for F8

Posted by on May 19, 2015 in data mapping | No Comments


Obscura Digital’s installation for the F8 conference uses 3D Cameras like Kinects to track users and map similar interests, friends, locations, etc. The installation queries the user’s Facebook profiles, and uses the data to drive the floor projections. It’s a pretty interesting convergence of digital communication in physical space.

Read more here.

Passed along by Kameron Baumgardner.

Geo-Positioning Information With Meerkat

As I’ve written before, Meerkat is a really fantastic tool for importing GIS information into Grasshopper. Since many municipalities provide GIS information for free, GIS is an accurate and facile format for introducing geographic information to the GH environment. Meerkat can also be used to provide a framework to translate between geo-spatial and rhino-space coordinates, creating a facile way of mapping geographic locations within Grasshopper.

First, use the Import Shapefile module to prep your GIS files to be referenced by Meerkat. All this means is connecting a Boolean Toggle to the Import Shapefile module and double clicking it- which toggles it to true, activating the Meerkat interface.

Once Meerkat is launched, use the “Add Shape File” button to select the GIS shapefiles you’d like to work with. If this causes Rhino to crash, go into your Components Folder where the Meerkat files are located and unblock the Meerkat component and all of it’s .dll files. This interface is a fantastic attribute of Meerkat as it allows you to crop out any GIS info you don’t want. Use the rectangle at the top of the screen to select the region you’d like to use, then click Crop Shape File(s).


And nothing happens… at least that you can see. Meerkat has saved .mkgis files for you that you now need to reference with the Parse .mkgis module. Use a File Path module to select the correct path(s), and then plug that into the Parse .mkgis module. You may want to turn your Boolean Toggle to False, this will prevent you from launching Meerkat the next time you open your script.


You’ll notice that by default Meerkat positions the GIS information pretty far from the Rhino space origin. One trick to make the data more manageable is to center your data at 0,0.


Use the Area module to get the centroid of the Bounds in Point Space polyline. If you use the Vector 2pt module to calculate the vector between that centroid and a 0,0,0 point (created here by the Construct Point module set to default values), you can then use that vector to center the GIS geometry (Geometry per Shape) in Rhino space. From here you can just use a Polyline Module to create linework from the points.


These steps have created a basemap to work with, but now we need to start positioning geo-spatial coordinates. gHowl’s GEO -> XYZ module does this well, but we need to give it more information before it can run. Use the same vector information we used before to center the Bounds in Point Space polyline on 0,0,0. Explode the polyline, and use List Items modules to isolate the 0th and 2nd point of the polyline. These will become the P1_XYZ and P2_XYZ input of the GEO -> XYZ module.


From here, you need to massage the Bounds in Lat-Long output a little to feed it to the GEO -> XYZ module. The Bounds in Lat-Long output is essentially a string of text that needs to be broken in order to read as two points, use the Text Split module to break up the coordinates at the space. From here, use the List Item module again to isolate each point, then plug them into the GEO -> XYZ. Make sure you put the 0th point into P1_GEO and the 1st point into P2_GEO. Run whatever geo-spatial coordinates you’d like into the P input of the GEO -> XYZ, and you are mapping with Meerkat.

Morphocode’s Urban Circulation Data

Posted by on Jul 14, 2014 in Apps, computational ecologies, data mapping | No Comments

Hong Kong – Walking
Hong Kong – Cycling
Hong Kong – Running
Hong Kong – Vehicular Transport

Creators of the GH plugin Rabbit Morphocode have used Humanco Inc’s app Human to describe circulation patterns in 30 cities worldwide. The circulation is broken down by vehicle, giving interesting analysis about how people move through different metropolises. The imagery is remarkably beautiful and insightful… I would not have expected for Montreal to be #2 on this list for car traffic.

More here.

Edit: I incorrectly reported Human as having been created by Morphocode, it was created by Humanco Inc. Thanks @morphocode!

We Feel

Posted by on May 20, 2014 in data mapping | No Comments

We feel is both an use of social media for cultural analytics as well as some fantastic interactive infographics. The site searches for tweets with certain emotional keywords, then allows you to filter by continent, gender and date. Check out the site here.
Passed along by ::clavionline.

Citi Bike Visualization

Posted by on Apr 2, 2014 in computational ecologies, data mapping | No Comments

This visualization of Citi Bike usage in NYC was put together by Line Point Path to mark the release of Citi Bike’s System Data. The video’s a gorgeous and fascinating visualization and the Citi Bike Data is a great resource for anyone looking at Manhattan transit.
Passed along by ::Catherine Page Harris.

Meerkat GIS Address Lookup

Since posting last week about Nathan Lowe’s amazing Meerkat GIS, I found this tutorial on how to position your Meerkat Shapefile through an address lookup. Enjoy!

Starlings at Sunset

Posted by on Feb 27, 2014 in computational ecologies, data mapping | No Comments

RISD Professor Dennis Hlynsky uses a digital sampling technique to show the flight paths of birds and insects in this incredible video. Hlynsky describes this patterning as a look at “the dynamics of creatures with small brains who come together on mass.” Truly intriguing work with interesting implications for representational techniques for GPS-based urban analysis.
Passed along by ::Catherine Page Harris.

Meerkat GIS for GH

food4rhino_screenshot (1)
Meerkat GIS is a GH component that loads GIS shapefiles into the Grasshopper environment. The unique element of Meerkat is its ability to prepare and crop GIS shapefiles before loading them into GH, keeping the size of the data to a minimum and keeping things light. Nathan really did a fantastic job of streamlining the interface between large datasets and GH. Download Meerkat GIS here and see Nathan’s tutorial below.

Positioning .gpx Information in GH

Posted by on Feb 12, 2014 in data mapping, Grasshopper | 2 Comments

The GPS eXchange file format is a quick and easy way to get geo-located points out of a tracking software such as Strava or MapMyRide. I hadn’t realized that it was in an .xml format until reading Hjörtur Sigurðsson’s blog post on positioning Endomondo information in GH. Sigurðsson doesn’t go into detail about how to develop the script, so I thought I’d play around with it and see how to get .gpx info into the GH environment. This script uses components from gHowl and Elk, feel free to click on any of the images to enlarge.


The first step is to create a link between GH and the .gpx file path. Save the .gpx file you’d like to use somewhere on your machine or server, and then use the File Path module to link the information into GH.


Use gHowl’s Xml Parser module to parse and understand the .xml data.


The .xml data will likely have some metadata at the top of your point list, use the Split Tree module to create a branch without this info. The Split Tree’s splitting input is inclusive, so you want to list the last branch you’d like to remove for the split.


The formatting may change depending on your .gpx source. In this case, the point coordinates were listed as separate items within a branch, so use list items to separate the different coordinates and then merge them back together in a Construct Point module.


Once the points are formatted, follow the same sequence I described in my tutorial on using Elk to Create Maps in Grasshopper. This requires finding a .osm file and SRTM data of the same area that you are mapping. This isn’t an overly elegant solution at the moment, but will allow you to position .gpx information within GH. Good luck!

Metaball Diagrams with Google Earth and gHowl

Posted by on Jul 8, 2013 in data mapping, Grasshopper | 3 Comments

Google Earth presents an intuitive, dynamic platform for understanding spatial context. Combined with a parametric modeler like Grasshopper, Google Earth presents complex datasets relative to geo-positioning in a way that is understandable. Facilitated by GH plugin gHowl, GH meshes and lines can be exported in Google Earth’s .kml format to be viewed by Google Earth or an enabled web browser.

Creating legible geometry for Google Earth is challenging, but one type of geometry I’ve experimented with is GH’s metaballs, which are about as old school as it gets for 3D curvature. Metaballs, as described by Yoda (Greg Lynn), are “defined as a single surface whose contours result from the intersection and assemblage of the multiple internal fields that define it.” (Lynn, Blobs, Journal of Philosophy and the Visual Arts 1995). This aggregation of internal fields can provide an intuitive understanding of various contextual forces relative to the spatial context of a site. While GH metaballs are only curves and not meshes / surfaces you can easily use a delaunay mesh to begin to create a mesh.

This tutorial will walk through the process of creating metaballs from Geo coordinates. I’m using a map I created with Elk that is based off of Open Street Maps info, if you’re interested in doing something similar look here.

Just click on the images below if you’d like to see them in more detail.

Start by positioning your Geo coordinates in GH space through gHowl’s Geo To XYZ module.


Use the output of the Geo to XYZ module as the point input for GH’s Metaball(t) module. There are several options for creating metaballs, I’ve had the best luck with the (t) one. The next step is to set up a series of section planes for the Metaball(t), the number of planes will define the resolution of the metaball. Instead of creating planes, it’s a little bit more familiar / easier to create a series of points in the Z direction. The last input you need is the threshold value, which is a number you want as low as absolutely possible. The trick to this is that you probably still want the flexibility of a slider, but on a city scale metaball you need a number smaller than .001 which is the minimum value a slider allows. The trick here is to multiply two sliders with small values together and use that value to drive the threshold value, you can even use a third or fourth slider if you are using a bigger scale.


Once you’ve created the metaballs, you can use the gHowl KML Out module to create a .kml. Use a path module to set a file path, have the Metaball(t) output feed the G input of the KML Out. Use the KML Style module to set the curve color and use 2 similar GEO and XYZ points that you used in the Geo to XYZ module to Geo reference the output. I’ve had the best luck with setting the Altitude Mode to Absolute, but I’ve really only done this at sea level at this point.


This will create a .kml file that will show your metaball data in Google Earth.