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 <[email protected] <mailto:[email protected]>> 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<[email protected]
            <mailto:[email protected]>>  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<
                    [email protected]
                    <mailto:[email protected]>>  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:
                            [email protected]
                            
<mailto:[email protected]>
                            
[mailto:[email protected]
                            
<mailto:[email protected]>]
                            On
                            Behalf Of Martin Davis
                            Sent: Thursday, May 06, 2010 8:56 AM
                            To: John Abraham;
                            [email protected]
                            <mailto:[email protected]>;
                            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
                                    [email protected]
                                    
<mailto:[email protected]>
                                    
http://postgis.refractions.net/mailman/listinfo/postgis-users





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

                            _______________________________________________
                            postgis-users mailing list
                            [email protected]
                            <mailto:[email protected]>
                            
http://postgis.refractions.net/mailman/listinfo/postgis-users



                        _______________________________________________
                        postgis-users mailing list
                        [email protected]
                        <mailto:[email protected]>
                        
http://postgis.refractions.net/mailman/listinfo/postgis-users





                     
------------------------------------------------------------------------


                    _______________________________________________
                    postgis-users mailing list
                    [email protected]
                    <mailto:[email protected]>
                    
http://postgis.refractions.net/mailman/listinfo/postgis-users


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

                _______________________________________________
                postgis-users mailing list
                [email protected]
                <mailto:[email protected]>
                http://postgis.refractions.net/mailman/listinfo/postgis-users


            _______________________________________________
            postgis-users mailing list
            [email protected]
            <mailto:[email protected]>
            http://postgis.refractions.net/mailman/listinfo/postgis-users

        _______________________________________________
        postgis-users mailing list
        [email protected]
        <mailto:[email protected]>
        http://postgis.refractions.net/mailman/listinfo/postgis-users


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

    _______________________________________________
    postgis-users mailing list
    [email protected]
    <mailto:[email protected]>
    http://postgis.refractions.net/mailman/listinfo/postgis-users




--
************************************
David William Bitner


_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to