OSM Importer SOP

The OSM Importer lets you import data from the Open Street Map data. This is an open database of most of the planet. 

The idea is to use real data to generate representations of existing cities, or to use as a starting point for new cities. A few tools to aid building generation will follow, but the first step is to get the raw footprint shapes constructed or imported. 

You can download this tool from our Github Repository

Houdini 16.5 Update

Updates to the OSM tool with some better attribute handling.

Extruding Building Shapes from OSM Data

Likely the first thing you'll try to do is extrude the building shapes, but there is a small gotcha on the way the data is being generated. This video will help you sort through that and show you a trick with using the generated data as a random seed. 


  • Doudini 7 months, 3 weeks ago  | 

    This is some great stuff Luiz! We have been on the look for some good OSM importer for Houdini and ended up using blender to get the Data. This looks really good! Cant wait to test it.

    • lkruel 7 months, 3 weeks ago  | 

      Glad you like it! Please report back after you have tested. I would love some feedback

      • Doudini 7 months, 3 weeks ago  | 

        I tested it with some Data we had laying around from the last project and so far it just works great! I like how all attributes get imported which makes it very easy to separate all the geo. Also the import was very quick and fast for a 25mb data. I will throw some bigger files at it and see that we can use it in production soon. :) Great Work!

        • lkruel 7 months, 3 weeks ago  | 

          Awesome! Glad you noticed those 2 things in particular (speed and completeness of the data) that's something that was pretty deliberate.

          I've gotten up to just over a gig with my OSMs. It was a large map of Tokyo, I think it took maybe around 10 minutes to load and it was something like 20 million points. It's designed to stream in the XML data so it shouldn't blow out of memory. Let me know what is your rough use case size once you get to that point.


  • yiannisr 7 months, 2 weeks ago  | 

    In apprentice there is not osm

  • Andr1 7 months, 2 weeks ago  | 

    omg... thanks! Going to try it soon

  • Andr1 7 months, 2 weeks ago  | 

    Hello Luiz,
    have you ever played with the Umap implementation?
    It works like google mymap (but it's better) and allows you to create custom shapes, lines, and markers over the map.

    It would be super useful to be able to import them in Houdini as well!
    Please have a look here: https://umap.openstreetmap.fr/en/


  • Areito 7 months ago  | 

    Hi I cant seem to get this to work on Linux, the python node fails with:

    File"", line 203, in
    File"", line 129, in build
    AttributeError:'Geometry'object has no attribute 'createPoints'

    works fine on osx

    • Rates 7 months ago  | 

      got it working, it was the python api
      moving from h to 16.0.633 fixed it.

  • kevinthebright 6 months, 3 weeks ago  | 

    Might be missing it but it doesn't show up on GitHub now, under the linked page or sidefx main page. Something change?

  • JohnDraisey 5 months, 3 weeks ago  | 

    This is brilliant! I got it to work on a small city section, and it's giving me a good starting point for procedural generation of the buildings in that section.

  • JohnDraisey 5 months, 3 weeks ago  | 

    Quick question, how do you open a ".map" file? I took your advice and clicked on the "Overpass API" link for a large region of OpenStreetMap.

  • mapoga 4 months, 3 weeks ago  | 

    This is amazing! Great work. Its super fast just what i needed.

    After having played with it a little I was looking into the possibility to import and merge multiple maps from separate files. And found it difficult to do with how the node works right now.

    I fiddled around and played with the code a bit so that it wouldn't be re-centered but stayed at its Mercator projection position.
    That worked but i had a small offset for each map generated from the bounding box of the captured file having less precision than the nodes themselves.
    Removing the involvement of the bbox altogether fixed my issue.

    If this node ends up being part of the full version of Houdini I think it would be nice to have that option.

    Thank you Luiz!

    • lkruel 4 months, 3 weeks ago  | 

      Oh nice! Yeah I could see that being useful.

      Thanks for the tip


  • EmmaSchuepfer 4 months, 2 weeks ago  | 

    That plugin is pretty cool!
    In order to mold the streets I tried to join all the single Bezier Curves of one street into one NURBS curve, so I can arrange lines along it and use Sweep afterwards.
    But somehow it seems impossible to join the lines into a single NURBS curve. Any ideas how I could do it?

    Thanks you!

    • lkruel 1 week, 6 days ago  | 

      try using the PolyPath node, usually does a good job for me

  • tamte 2 weeks, 2 days ago  | 

    pretty useful, one note
    wouldn't osm_* be better attribute prefix choice than hou_*?

    • lkruel 1 week, 6 days ago  | 

      Yeah, you're right again. I'll update the tools to match this

  • Igor Batrakov 2 weeks, 1 day ago  | 

    Hey, Luiz!
    I've spent some time to figure out why "rand" function wasn't working. Cause hou_id is in string format! So you need firstly to conert it and code is looking like this:


    Just wanted to make you know.

    • lkruel 1 week, 6 days ago  | 

      Yeah, currently all of the attributes are string attributes. I thought it might be confusing to have some as int and some as string. But I supposed some of the most commonly used should be handled. I ran into some the same issues messing around with height, having to convert it to to a float so I can extrude based on it. Could be simpler

  • Danil Shaposhnikov 2 weeks ago  | 

    Great tool! Very useful. I`ve combine that with https://terrain.party/ world height map. Now I have a model of my hometown with all the landscape around :)

  • Rod TD 2 weeks ago  | 

    very nice!! but, how to convert string height attributes to float to use on extrude??
    i tried use attribute wrangle, but not figured how to use atof() to call @height values... any ideas?
    thanks Luiz :)

    • lkruel 1 week, 6 days ago  | 

      Check out the OSM Buildings node, it does that conversion in there.

      • Rod TD 1 week, 5 days ago  | 

        in the Python code? hmm...
        i'm searching for stuff like " prim.setAttriValue("heigth"... " or similar, but can't found.

        • Rod TD 5 days, 21 hours ago  | 

          now i got it! with atof() thanks!

Please log in to leave a comment.