[postgis-users] Dot Density idea

Jan Hartmann j.l.h.hartmann at uva.nl
Thu May 6 11:17:07 PDT 2010


I did it just for grids, but the idea could be extended to intersection 
of rectangles and polygons, as David suggests. Don't know how difficult 
this would be for vector maps, but for raster maps the idea looks viable 
to me. Dot-density maps *would* be useful for general mapping, anyway.

Jan

On 05/06/10 19:51, 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 
> <mailto: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
>             <mailto: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
>                     <mailto: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>
>                             [mailto: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
>                             <mailto: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
>                                     <mailto: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
>                             <mailto:postgis-users at postgis.refractions.net>
>                             http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
>
>                         _______________________________________________
>                         postgis-users mailing list
>                         postgis-users at postgis.refractions.net
>                         <mailto:postgis-users at postgis.refractions.net>
>                         http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
>
>
>
>                      ------------------------------------------------------------------------
>
>
>                     _______________________________________________
>                     postgis-users mailing list
>                     postgis-users at postgis.refractions.net
>                     <mailto: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
>                 <mailto:postgis-users at postgis.refractions.net>
>                 http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
>             _______________________________________________
>             postgis-users mailing list
>             postgis-users at postgis.refractions.net
>             <mailto:postgis-users at postgis.refractions.net>
>             http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>         _______________________________________________
>         postgis-users mailing list
>         postgis-users at postgis.refractions.net
>         <mailto: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
>     <mailto: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
>    
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20100506/99092914/attachment.html>


More information about the postgis-users mailing list