[postgis-users] Dot Density idea

Martin Davis mbdavis at refractions.net
Thu May 6 15:00:54 PDT 2010


Which is a nice segue into this thread:

http://sourceforge.net/mailarchive/forum.php?thread_name=s2he24c4c271005042228wfff7b9abjadf3eb357fe0c712%40mail.gmail.com&forum_name=jts-topo-suite-user


Norman Vine wrote:
> When I have done this before I usually triangulate the polygon
> first  then use each triangles area to normalize the number of 
> points randomly inserted into each triangle
>
> On May 6, 2010, at 1:51 PM, David William Bitner wrote:
>
>   
>> If it was the overall density of the dots that mattered and not as much the exact number of dots, a representative table could be made with a "random yet even" set of dots covering a certain area. To apply to a polygon, you could then Scale the data to the appropriate density and translate/compute the intersection to apply to a given polygon.
>>
>> On Thu, May 6, 2010 at 12:50 PM, Martin Davis <mbdavis at refractions.net> wrote:
>> Did your algorithm work with irregular polgon extents?
>>
>>
>> Jan Hartmann wrote:
>> I did this long ago. Regular points won't work, you'll get all kinds of moire patterns. I just computed random x and y values from the origin of the grid cell within the x- and y grid-size. Can't remember having any problems with overlapping points.
>>
>> Jan
>>
>> On 05/06/10 19:35, Paul Ramsey wrote:
>> Even-yet-random :) nice requirement. How about just starting with a
>> regular grid and then perturbing the elements randomly with a radius
>> of a cell size? You can use the area of the polygon and number of
>> needed points to calculate the appropriate cell size and go from
>> there.
>>
>> P
>>
>> On Thu, May 6, 2010 at 10:28 AM, Martin Davis<mbdavis at refractions.net>  wrote:
>>  
>> Good point about the need for even distribution of the points. That seems
>> like a whole lot harder to code than simply randomly placing points in a
>> polygon.  Does anyone have any pointers to algorithms for producing this
>> effect?
>>
>> George Silva wrote:
>>    
>> The really big problem with dot density is that dots can overlap
>> themselves,
>> masking the real number, so if anything will be developed in this area,
>> the
>> points should be
>>
>> A) evenly distributed
>> or
>> B) randomly distributed, but with some sort of "colision" tests, so there
>> is
>> no or little overlap.
>>
>> This is a interesting idea, especially if we could make a materialized
>> view
>> with those points, which could be added to GIS software for presentation.
>>
>> George
>>
>> On Thu, May 6, 2010 at 1:53 PM, Sufficool, Stanley<
>> ssufficool at rov.sbcounty.gov>  wrote:
>>
>>
>>      
>> Looks nasty, but it might work:
>>
>> select
>> st_line_interpolate_point(
>>       st_intersection(
>>               the_geom,
>>               st_makeline(
>>                       st_pointn(st_exteriorring(the_geom), (rand1.rand *
>> st_npoints(st_exteriorring(the_geom)))::int),
>>                       st_pointn(st_exteriorring(the_geom), (rand2.rand *
>> st_npoints(st_exteriorring(the_geom)))::int)
>>               )
>>       )
>>       ,rand3.rand
>> )
>> from insert_your_table_name_here,
>> (select random() as rand, generate_series(1,1000) as point_number) as
>> rand1
>> JOIN (select random() as rand, generate_series(1,1000) as point_number)
>> as
>> rand2
>>       ON rand1.point_number = rand2.point_number
>> JOIN (select random() as rand, generate_series(1,1000) as point_number)
>> as
>> rand3
>>       ON rand2.point_number = rand3.point_number
>> WHERE st_geometrytype(
>>       st_intersection(
>>               the_geom,
>>               st_makeline(
>>                       st_pointn(st_exteriorring(the_geom), (rand1.rand *
>> st_npoints(st_exteriorring(the_geom)))::int),
>>                       st_pointn(st_exteriorring(the_geom), (rand2.rand *
>> st_npoints(st_exteriorring(the_geom)))::int)
>>               )
>>       )
>> ) = 'ST_LineString'
>> AND oid = 5030 /* Enter your own OID here */
>> limit 100
>>
>>
>>
>>
>>        
>> -----Original Message-----
>> From: postgis-users-bounces at postgis.refractions.net
>> [mailto:postgis-users-bounces at postgis.refractions.net] On
>> Behalf Of Martin Davis
>> Sent: Thursday, May 06, 2010 8:56 AM
>> To: John Abraham; postgis-users at postgis.refractions.net; Martin Davis
>> Subject: Re: [postgis-users] Dot Density idea
>>
>>
>> I was thinking the same thing!
>>
>> strk wrote:
>>
>>          
>> ST_RandomPoinsOnSurface(geometry, numpoints) would be an interesting
>> function indeed. Sounds like a good job for GEOS/JTS.
>>
>> --strk;
>>
>> On Mon, May 03, 2010 at 10:49:32PM -0600, John Abraham wrote:
>>
>>
>>            
>> One of the things I miss about using ESRI's GIS is the
>>
>>               
>> ability to do
>>
>>          
>> dot-density maps.  Within a polygon, the number of dots is
>>
>>               
>> proportional to a value, and the dots are randomly placed.  I
>> find it useful to be able to present several data values at
>> once (e.g. blue dots for population, red dots for employment).
>>
>>          
>> I also find that it is a more intuitive way of scaling for
>>
>>               
>> zone size
>>
>>          
>> than dividing the value by the area of the zone.  That is,
>>
>>               
>> the count
>>
>>          
>> of the dots represents the actual number, but the density
>>
>>               
>> of the dots
>>
>>          
>> represents the density of the number.  So I don't have to decide
>> whether to divide the value by the area of the polygon to plot
>> density: both the absolute number and the density are
>>
>>               
>> easily visible.
>>
>>          
>> Since my open-source GIS viewing systems (mostly QGIS and
>>
>>               
>> Mapserver)
>>
>>          
>> won't plot dot-density, I've done without.
>>
>> But today I realized that I can build these on the server
>>
>>               
>> instead.  I
>>
>>          
>> can generate random points within the bounding-box of the polygon,
>> throwing out those that aren't contained within the polygon,
>> repeating until I have enough.  Then I can save these points as a
>> separate layer, and display this layer using almost any desktop or
>> web based viewer!
>>
>> Has anyone done this?  Can I do it in SQL or do I need to write
>> something in PL/pgsql?
>>
>> -- 
>> John Abraham
>>
>> PS I just bought the Postgis In Action book; enjoying it so far.
>> _______________________________________________
>> postgis-users mailing list postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>
>>               
>>
>>             
>> -- 
>> Martin Davis
>> Senior Technical Architect
>> Refractions Research, Inc.
>> (250) 383-3022
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>
>>           
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>
>>         
>>
>>
>>  ------------------------------------------------------------------------ 
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>       
>> -- 
>> Martin Davis
>> Senior Technical Architect
>> Refractions Research, Inc.
>> (250) 383-3022
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>     
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>   
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>
>> -- 
>> Martin Davis
>> Senior Technical Architect
>> Refractions Research, Inc.
>> (250) 383-3022
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>
>>
>> -- 
>> ************************************
>> David William Bitner
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>     
>
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>   

-- 
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022




More information about the postgis-users mailing list