I was playing with the DOTDENSITY functional attribute today. Although it’s quite easy to use, I’m not sure how many people have ever actually used it.
It’s defined as "Returns a collection of points that are placed on that area". Basically, you can tell GeoMedia to place a number of dots on a polygon and these number of dots are designed to show density. The more dots, the greater the density. I’ve typically seen this done with populations. So, to make life simple and easy to share with my readers, I did a little playing with the US Sample data set. You can download my geoworkspace from here. The geoworkspace should work fine if you have the US Sample data set in c:\warehouses. If you’ve moved it, just be sure to change the location of the warehouse under Warehouse > Connections.
In short, I normalized the population by dividing the populations for Asians, Blacks, and Whites. I did this by dividing each population by 10,000. This functional attribute looked like ROUND(Input.WHPOP/10000, 0). This was done just to simply reduce the number of dots. After that, I created the functional attribute: DOTDENSITY(Input.Geometry, INT(Output.WHITE)). This simply takes the output from my previous functional attribute that divided the white population by 10,000 (Output.WHITE) and rounded it to the nearest whole number (INT function). After that I feed in the input geometry and the rounded Output.WHITE population into the DOTDENSITY function. The result is a point collection for each of the black, white, and asian populations.
You can take a look at my screenshots of California to see the results:
All of the dots:
White dot = White Population
Black dot = Black Population
Blue dot = Asian Population
White Population
Black Population
Asian Population
Jeff – The great thing about receiving information like this is that it sparks new ideas. I’m building a map for Intergraph’s I/CAD software, and patterning isn’t supported. It strikes me I can use this information about DOTDENSITY to mimic a pattern within an area, and then output that to my map as patterning. That wasn’t your intention in your blog, but it shows the importance of seeing what other people are doing and using it for your own workflows. You’ve added to my arsenal–thanks!
For patterning you probably need to make the number of dots proportional to the feature’s area.
Sean – great point! It’s really fairly interesting how many different uses some of these functions can have.
Recently, I had a need for this functional attribute. Being somewhat ignorant of the Microstation design file format and its limitations, I was surprised to see that some of my features in Geomedia failed to export to dgn file or were clipped on the edges. Basically it was the limitation of the extents of the seed file that I had to use. I needed to figure out what exact extents this seed file had and display it in Geomedia so that I could ensure that future exports to dgn exported the features I wanted. So heres what I did:
1. Created a large square polygon that was certain to exceed the geographic extents of my seed file.
2. Filled that polygon with 100,000 points using the DOTDENSITY functional attribute
3. Export those points to design file using my seed file.
4. Import that new dgn file back into Geomedia
5. Now the imported points created a perfect square showing the geographic extents of my seed file.
Im sure there must be an easier way to accomplish this, but this was the first thing that came to mind, and it worked perfectly.