[postgis-users] Dot Density idea
Martin Davis
mbdavis at refractions.net
Thu May 6 10:50:51 PDT 2010
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
More information about the postgis-users
mailing list