You can subscribe to this list here.
2009 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}

_{Oct}

_{Nov}
(3) 
_{Dec}


2010 
_{Jan}
(30) 
_{Feb}
(41) 
_{Mar}
(69) 
_{Apr}
(131) 
_{May}
(67) 
_{Jun}
(24) 
_{Jul}
(28) 
_{Aug}
(52) 
_{Sep}
(9) 
_{Oct}
(24) 
_{Nov}
(36) 
_{Dec}
(24) 
2011 
_{Jan}
(20) 
_{Feb}
(53) 
_{Mar}
(31) 
_{Apr}
(74) 
_{May}
(71) 
_{Jun}
(51) 
_{Jul}
(28) 
_{Aug}
(91) 
_{Sep}
(72) 
_{Oct}
(46) 
_{Nov}
(90) 
_{Dec}
(38) 
2012 
_{Jan}
(80) 
_{Feb}
(77) 
_{Mar}
(98) 
_{Apr}
(78) 
_{May}
(56) 
_{Jun}
(85) 
_{Jul}
(53) 
_{Aug}
(87) 
_{Sep}
(74) 
_{Oct}
(67) 
_{Nov}
(85) 
_{Dec}
(66) 
2013 
_{Jan}
(50) 
_{Feb}
(34) 
_{Mar}
(45) 
_{Apr}
(36) 
_{May}
(22) 
_{Jun}
(10) 
_{Jul}
(30) 
_{Aug}
(39) 
_{Sep}
(25) 
_{Oct}
(11) 
_{Nov}
(64) 
_{Dec}
(42) 
2014 
_{Jan}
(27) 
_{Feb}
(6) 
_{Mar}
(10) 
_{Apr}
(14) 
_{May}
(25) 
_{Jun}
(6) 
_{Jul}
(25) 
_{Aug}
(3) 
_{Sep}
(22) 
_{Oct}
(12) 
_{Nov}
(34) 
_{Dec}
(15) 
2015 
_{Jan}
(24) 
_{Feb}
(20) 
_{Mar}
(11) 
_{Apr}

_{May}
(37) 
_{Jun}
(24) 
_{Jul}
(17) 
_{Aug}
(10) 
_{Sep}
(3) 
_{Oct}
(15) 
_{Nov}
(21) 
_{Dec}
(20) 
2016 
_{Jan}
(30) 
_{Feb}
(15) 
_{Mar}

_{Apr}

_{May}

_{Jun}
(1) 
_{Jul}
(20) 
_{Aug}

_{Sep}

_{Oct}

_{Nov}

_{Dec}

S  M  T  W  T  F  S 




1

2

3

4

5

6

7
(4) 
8
(10) 
9
(3) 
10
(2) 
11

12

13

14
(1) 
15
(4) 
16

17
(1) 
18

19
(1) 
20
(2) 
21

22
(1) 
23
(1) 
24

25

26
(2) 
27
(5) 
28
(7) 
29
(7) 
30



From: Diego Bernini <diego.bernini@gm...>  20110629 19:52:52

Great, thank you so much for the support! 2011/6/29 Martin Davis <mtnclimb@...> > Oh well, that's fine then. > > An even better approximation might be given by a *concave* hull. I have > some code in the lab that will construct Concave Hulls  I just need to > polish it up a bit and get it into JTS. > > Martin > > > On Wed, Jun 29, 2011 at 12:33 PM, Diego Bernini <diego.bernini@...>wrote: > >> Yeah, but actually I think that this is coherent with respect to my goals >> :) >> >> thanks a lot, >> Diego >> >> 2011/6/29 G. Allegri <giohappy@...> >> >> Diego, convexHull proabably will build larger polygons then your starting >>> ones. >>> Here is an example: http://bit.ly/iMt4fe, where the bottom polygon is >>> the convexHull of your point set. >>> >>> giovanni >>> >>> >>> 2011/6/29 Diego Bernini <diego.bernini@...> >>> >>>> Thanks so much. >>>> Actually, I think that an alternative way (with a "upper bound" >>>> approximation) could be given by the "convexHull" method. >>>> I create a MultiPoint object starting from my Coordinate array. Then I >>>> invoke the "convexHull" method. It should return a polygon (except the case >>>> the point describe a straight line) and then I can invoke the getArea >>>> method. >>>> >>>> Diego >>>> >>>> 2011/6/29 Martin Davis <mtnclimb@...> >>>> >>>>> The best way I can think of to this in JTS is: >>>>> >>>>>  Create a LineString from your list of vertices. (Ensure it is >>>>> closed) >>>>>  Run union() on the LineString. This will node the linework >>>>>  Use the Polygonizer to polygonize the linework. >>>>> >>>>> The one downside to this is that any holes will show up as polygons as >>>>> well. >>>>> >>>>> It would be nice to have an API which automatically created valid >>>>> polygons from arbitrary linework. I"ll add this to the feature list... >>>>> >>>>> On Wed, Jun 29, 2011 at 1:46 AM, Diego Bernini < >>>>> diego.bernini@...> wrote: >>>>> >>>>>> Hi to all, >>>>>> I am using Java Topology Suite for a project. >>>>>> >>>>>> I have a sequence of coordinates which describes a irregular linear >>>>>> polygon. Actually it may describe an open "linearized curve", but for the >>>>>> moment assume that it describes a irregular polygon, i.e., the sequence is >>>>>> closed (linear ring), the first and the last points are the same. >>>>>> >>>>>> Some experiments show me that JTS allows the creation of a polygon >>>>>> (Polygon object) starting from a sequence which describes a >>>>>> selfintersecting polygon. Calling the "isValid" method returns "false". >>>>>> However the perimeter seems to be calculated well; but the area calculation >>>>>> seems not correct. I think that this is because JTS uses the formula >>>>>> described here >>>>>> >>>>>> http://en.wikipedia.org/wiki/Polygon#Area_and_centroid >>>>>> >>>>>> which does not provide the right value when considering >>>>>> selfintersecting polygons. >>>>>> >>>>>> I am wondering if JTS supports more or less directly the split of a >>>>>> selfintersecting polygon to a set of a nonintersecting polygons. If this >>>>>> would be possible, I can calculate the overall area as sum of the areas of >>>>>> the non selfintersecting polygons. >>>>>> >>>>>> Thanks in advance, >>>>>> Diego >>>>>> >>>>>> >>>>>>  >>>>>> All of the data generated in your IT infrastructure is seriously >>>>>> valuable. >>>>>> Why? It contains a definitive record of application performance, >>>>>> security >>>>>> threats, fraudulent activity, and more. Splunk takes this data and >>>>>> makes >>>>>> sense of it. IT sense. And common sense. >>>>>> http://p.sf.net/sfu/splunkd2dc2 >>>>>> _______________________________________________ >>>>>> Jtstoposuiteuser mailing list >>>>>> Jtstoposuiteuser@... >>>>>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>>>>> >>>>>> >>>>> >>>>> >>>>>  >>>>> All of the data generated in your IT infrastructure is seriously >>>>> valuable. >>>>> Why? It contains a definitive record of application performance, >>>>> security >>>>> threats, fraudulent activity, and more. Splunk takes this data and >>>>> makes >>>>> sense of it. IT sense. And common sense. >>>>> http://p.sf.net/sfu/splunkd2dc2 >>>>> _______________________________________________ >>>>> Jtstoposuiteuser mailing list >>>>> Jtstoposuiteuser@... >>>>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>>>> >>>>> >>>> >>>> >>>>  >>>> All of the data generated in your IT infrastructure is seriously >>>> valuable. >>>> Why? It contains a definitive record of application performance, >>>> security >>>> threats, fraudulent activity, and more. Splunk takes this data and makes >>>> sense of it. IT sense. And common sense. >>>> http://p.sf.net/sfu/splunkd2dc2 >>>> _______________________________________________ >>>> Jtstoposuiteuser mailing list >>>> Jtstoposuiteuser@... >>>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>>> >>>> >>> >> > > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Martin Davis <mtnclimb@gm...>  20110629 19:50:59

Oh well, that's fine then. An even better approximation might be given by a *concave* hull. I have some code in the lab that will construct Concave Hulls  I just need to polish it up a bit and get it into JTS. Martin On Wed, Jun 29, 2011 at 12:33 PM, Diego Bernini <diego.bernini@...>wrote: > Yeah, but actually I think that this is coherent with respect to my goals > :) > > thanks a lot, > Diego > > 2011/6/29 G. Allegri <giohappy@...> > > Diego, convexHull proabably will build larger polygons then your starting >> ones. >> Here is an example: http://bit.ly/iMt4fe, where the bottom polygon is the >> convexHull of your point set. >> >> giovanni >> >> >> 2011/6/29 Diego Bernini <diego.bernini@...> >> >>> Thanks so much. >>> Actually, I think that an alternative way (with a "upper bound" >>> approximation) could be given by the "convexHull" method. >>> I create a MultiPoint object starting from my Coordinate array. Then I >>> invoke the "convexHull" method. It should return a polygon (except the case >>> the point describe a straight line) and then I can invoke the getArea >>> method. >>> >>> Diego >>> >>> 2011/6/29 Martin Davis <mtnclimb@...> >>> >>>> The best way I can think of to this in JTS is: >>>> >>>>  Create a LineString from your list of vertices. (Ensure it is closed) >>>>  Run union() on the LineString. This will node the linework >>>>  Use the Polygonizer to polygonize the linework. >>>> >>>> The one downside to this is that any holes will show up as polygons as >>>> well. >>>> >>>> It would be nice to have an API which automatically created valid >>>> polygons from arbitrary linework. I"ll add this to the feature list... >>>> >>>> On Wed, Jun 29, 2011 at 1:46 AM, Diego Bernini <diego.bernini@... >>>> > wrote: >>>> >>>>> Hi to all, >>>>> I am using Java Topology Suite for a project. >>>>> >>>>> I have a sequence of coordinates which describes a irregular linear >>>>> polygon. Actually it may describe an open "linearized curve", but for the >>>>> moment assume that it describes a irregular polygon, i.e., the sequence is >>>>> closed (linear ring), the first and the last points are the same. >>>>> >>>>> Some experiments show me that JTS allows the creation of a polygon >>>>> (Polygon object) starting from a sequence which describes a >>>>> selfintersecting polygon. Calling the "isValid" method returns "false". >>>>> However the perimeter seems to be calculated well; but the area calculation >>>>> seems not correct. I think that this is because JTS uses the formula >>>>> described here >>>>> >>>>> http://en.wikipedia.org/wiki/Polygon#Area_and_centroid >>>>> >>>>> which does not provide the right value when considering >>>>> selfintersecting polygons. >>>>> >>>>> I am wondering if JTS supports more or less directly the split of a >>>>> selfintersecting polygon to a set of a nonintersecting polygons. If this >>>>> would be possible, I can calculate the overall area as sum of the areas of >>>>> the non selfintersecting polygons. >>>>> >>>>> Thanks in advance, >>>>> Diego >>>>> >>>>> >>>>>  >>>>> All of the data generated in your IT infrastructure is seriously >>>>> valuable. >>>>> Why? It contains a definitive record of application performance, >>>>> security >>>>> threats, fraudulent activity, and more. Splunk takes this data and >>>>> makes >>>>> sense of it. IT sense. And common sense. >>>>> http://p.sf.net/sfu/splunkd2dc2 >>>>> _______________________________________________ >>>>> Jtstoposuiteuser mailing list >>>>> Jtstoposuiteuser@... >>>>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>>>> >>>>> >>>> >>>> >>>>  >>>> All of the data generated in your IT infrastructure is seriously >>>> valuable. >>>> Why? It contains a definitive record of application performance, >>>> security >>>> threats, fraudulent activity, and more. Splunk takes this data and makes >>>> sense of it. IT sense. And common sense. >>>> http://p.sf.net/sfu/splunkd2dc2 >>>> _______________________________________________ >>>> Jtstoposuiteuser mailing list >>>> Jtstoposuiteuser@... >>>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>>> >>>> >>> >>> >>>  >>> All of the data generated in your IT infrastructure is seriously >>> valuable. >>> Why? It contains a definitive record of application performance, security >>> threats, fraudulent activity, and more. Splunk takes this data and makes >>> sense of it. IT sense. And common sense. >>> http://p.sf.net/sfu/splunkd2dc2 >>> _______________________________________________ >>> Jtstoposuiteuser mailing list >>> Jtstoposuiteuser@... >>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>> >>> >> > 
From: Diego Bernini <diego.bernini@gm...>  20110629 19:33:20

Yeah, but actually I think that this is coherent with respect to my goals :) thanks a lot, Diego 2011/6/29 G. Allegri <giohappy@...> > Diego, convexHull proabably will build larger polygons then your starting > ones. > Here is an example: http://bit.ly/iMt4fe, where the bottom polygon is the > convexHull of your point set. > > giovanni > > > 2011/6/29 Diego Bernini <diego.bernini@...> > >> Thanks so much. >> Actually, I think that an alternative way (with a "upper bound" >> approximation) could be given by the "convexHull" method. >> I create a MultiPoint object starting from my Coordinate array. Then I >> invoke the "convexHull" method. It should return a polygon (except the case >> the point describe a straight line) and then I can invoke the getArea >> method. >> >> Diego >> >> 2011/6/29 Martin Davis <mtnclimb@...> >> >>> The best way I can think of to this in JTS is: >>> >>>  Create a LineString from your list of vertices. (Ensure it is closed) >>>  Run union() on the LineString. This will node the linework >>>  Use the Polygonizer to polygonize the linework. >>> >>> The one downside to this is that any holes will show up as polygons as >>> well. >>> >>> It would be nice to have an API which automatically created valid >>> polygons from arbitrary linework. I"ll add this to the feature list... >>> >>> On Wed, Jun 29, 2011 at 1:46 AM, Diego Bernini <diego.bernini@...>wrote: >>> >>>> Hi to all, >>>> I am using Java Topology Suite for a project. >>>> >>>> I have a sequence of coordinates which describes a irregular linear >>>> polygon. Actually it may describe an open "linearized curve", but for the >>>> moment assume that it describes a irregular polygon, i.e., the sequence is >>>> closed (linear ring), the first and the last points are the same. >>>> >>>> Some experiments show me that JTS allows the creation of a polygon >>>> (Polygon object) starting from a sequence which describes a >>>> selfintersecting polygon. Calling the "isValid" method returns "false". >>>> However the perimeter seems to be calculated well; but the area calculation >>>> seems not correct. I think that this is because JTS uses the formula >>>> described here >>>> >>>> http://en.wikipedia.org/wiki/Polygon#Area_and_centroid >>>> >>>> which does not provide the right value when considering >>>> selfintersecting polygons. >>>> >>>> I am wondering if JTS supports more or less directly the split of a >>>> selfintersecting polygon to a set of a nonintersecting polygons. If this >>>> would be possible, I can calculate the overall area as sum of the areas of >>>> the non selfintersecting polygons. >>>> >>>> Thanks in advance, >>>> Diego >>>> >>>> >>>>  >>>> All of the data generated in your IT infrastructure is seriously >>>> valuable. >>>> Why? It contains a definitive record of application performance, >>>> security >>>> threats, fraudulent activity, and more. Splunk takes this data and makes >>>> sense of it. IT sense. And common sense. >>>> http://p.sf.net/sfu/splunkd2dc2 >>>> _______________________________________________ >>>> Jtstoposuiteuser mailing list >>>> Jtstoposuiteuser@... >>>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>>> >>>> >>> >>> >>>  >>> All of the data generated in your IT infrastructure is seriously >>> valuable. >>> Why? It contains a definitive record of application performance, security >>> threats, fraudulent activity, and more. Splunk takes this data and makes >>> sense of it. IT sense. And common sense. >>> http://p.sf.net/sfu/splunkd2dc2 >>> _______________________________________________ >>> Jtstoposuiteuser mailing list >>> Jtstoposuiteuser@... >>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>> >>> >> >> >>  >> All of the data generated in your IT infrastructure is seriously valuable. >> Why? It contains a definitive record of application performance, security >> threats, fraudulent activity, and more. Splunk takes this data and makes >> sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunkd2dc2 >> _______________________________________________ >> Jtstoposuiteuser mailing list >> Jtstoposuiteuser@... >> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >> >> > 
From: G. Allegri <giohappy@gm...>  20110629 19:30:35

Diego, convexHull proabably will build larger polygons then your starting ones. Here is an example: http://bit.ly/iMt4fe, where the bottom polygon is the convexHull of your point set. giovanni 2011/6/29 Diego Bernini <diego.bernini@...> > Thanks so much. > Actually, I think that an alternative way (with a "upper bound" > approximation) could be given by the "convexHull" method. > I create a MultiPoint object starting from my Coordinate array. Then I > invoke the "convexHull" method. It should return a polygon (except the case > the point describe a straight line) and then I can invoke the getArea > method. > > Diego > > 2011/6/29 Martin Davis <mtnclimb@...> > >> The best way I can think of to this in JTS is: >> >>  Create a LineString from your list of vertices. (Ensure it is closed) >>  Run union() on the LineString. This will node the linework >>  Use the Polygonizer to polygonize the linework. >> >> The one downside to this is that any holes will show up as polygons as >> well. >> >> It would be nice to have an API which automatically created valid polygons >> from arbitrary linework. I"ll add this to the feature list... >> >> On Wed, Jun 29, 2011 at 1:46 AM, Diego Bernini <diego.bernini@...>wrote: >> >>> Hi to all, >>> I am using Java Topology Suite for a project. >>> >>> I have a sequence of coordinates which describes a irregular linear >>> polygon. Actually it may describe an open "linearized curve", but for the >>> moment assume that it describes a irregular polygon, i.e., the sequence is >>> closed (linear ring), the first and the last points are the same. >>> >>> Some experiments show me that JTS allows the creation of a polygon >>> (Polygon object) starting from a sequence which describes a >>> selfintersecting polygon. Calling the "isValid" method returns "false". >>> However the perimeter seems to be calculated well; but the area calculation >>> seems not correct. I think that this is because JTS uses the formula >>> described here >>> >>> http://en.wikipedia.org/wiki/Polygon#Area_and_centroid >>> >>> which does not provide the right value when considering selfintersecting >>> polygons. >>> >>> I am wondering if JTS supports more or less directly the split of a >>> selfintersecting polygon to a set of a nonintersecting polygons. If this >>> would be possible, I can calculate the overall area as sum of the areas of >>> the non selfintersecting polygons. >>> >>> Thanks in advance, >>> Diego >>> >>> >>>  >>> All of the data generated in your IT infrastructure is seriously >>> valuable. >>> Why? It contains a definitive record of application performance, security >>> threats, fraudulent activity, and more. Splunk takes this data and makes >>> sense of it. IT sense. And common sense. >>> http://p.sf.net/sfu/splunkd2dc2 >>> _______________________________________________ >>> Jtstoposuiteuser mailing list >>> Jtstoposuiteuser@... >>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>> >>> >> >> >>  >> All of the data generated in your IT infrastructure is seriously valuable. >> Why? It contains a definitive record of application performance, security >> threats, fraudulent activity, and more. Splunk takes this data and makes >> sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunkd2dc2 >> _______________________________________________ >> Jtstoposuiteuser mailing list >> Jtstoposuiteuser@... >> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >> >> > > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Diego Bernini <diego.bernini@gm...>  20110629 18:19:42

Thanks so much. Actually, I think that an alternative way (with a "upper bound" approximation) could be given by the "convexHull" method. I create a MultiPoint object starting from my Coordinate array. Then I invoke the "convexHull" method. It should return a polygon (except the case the point describe a straight line) and then I can invoke the getArea method. Diego 2011/6/29 Martin Davis <mtnclimb@...> > The best way I can think of to this in JTS is: > >  Create a LineString from your list of vertices. (Ensure it is closed) >  Run union() on the LineString. This will node the linework >  Use the Polygonizer to polygonize the linework. > > The one downside to this is that any holes will show up as polygons as > well. > > It would be nice to have an API which automatically created valid polygons > from arbitrary linework. I"ll add this to the feature list... > > On Wed, Jun 29, 2011 at 1:46 AM, Diego Bernini <diego.bernini@...>wrote: > >> Hi to all, >> I am using Java Topology Suite for a project. >> >> I have a sequence of coordinates which describes a irregular linear >> polygon. Actually it may describe an open "linearized curve", but for the >> moment assume that it describes a irregular polygon, i.e., the sequence is >> closed (linear ring), the first and the last points are the same. >> >> Some experiments show me that JTS allows the creation of a polygon >> (Polygon object) starting from a sequence which describes a >> selfintersecting polygon. Calling the "isValid" method returns "false". >> However the perimeter seems to be calculated well; but the area calculation >> seems not correct. I think that this is because JTS uses the formula >> described here >> >> http://en.wikipedia.org/wiki/Polygon#Area_and_centroid >> >> which does not provide the right value when considering selfintersecting >> polygons. >> >> I am wondering if JTS supports more or less directly the split of a >> selfintersecting polygon to a set of a nonintersecting polygons. If this >> would be possible, I can calculate the overall area as sum of the areas of >> the non selfintersecting polygons. >> >> Thanks in advance, >> Diego >> >> >>  >> All of the data generated in your IT infrastructure is seriously valuable. >> Why? It contains a definitive record of application performance, security >> threats, fraudulent activity, and more. Splunk takes this data and makes >> sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunkd2dc2 >> _______________________________________________ >> Jtstoposuiteuser mailing list >> Jtstoposuiteuser@... >> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >> >> > > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Martin Davis <mtnclimb@gm...>  20110629 16:29:13

The best way I can think of to this in JTS is:  Create a LineString from your list of vertices. (Ensure it is closed)  Run union() on the LineString. This will node the linework  Use the Polygonizer to polygonize the linework. The one downside to this is that any holes will show up as polygons as well. It would be nice to have an API which automatically created valid polygons from arbitrary linework. I"ll add this to the feature list... On Wed, Jun 29, 2011 at 1:46 AM, Diego Bernini <diego.bernini@...>wrote: > Hi to all, > I am using Java Topology Suite for a project. > > I have a sequence of coordinates which describes a irregular linear > polygon. Actually it may describe an open "linearized curve", but for the > moment assume that it describes a irregular polygon, i.e., the sequence is > closed (linear ring), the first and the last points are the same. > > Some experiments show me that JTS allows the creation of a polygon (Polygon > object) starting from a sequence which describes a selfintersecting > polygon. Calling the "isValid" method returns "false". However the > perimeter seems to be calculated well; but the area calculation seems not > correct. I think that this is because JTS uses the formula described here > > http://en.wikipedia.org/wiki/Polygon#Area_and_centroid > > which does not provide the right value when considering selfintersecting > polygons. > > I am wondering if JTS supports more or less directly the split of a > selfintersecting polygon to a set of a nonintersecting polygons. If this > would be possible, I can calculate the overall area as sum of the areas of > the non selfintersecting polygons. > > Thanks in advance, > Diego > > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Diego Bernini <diego.bernini@gm...>  20110629 08:46:14

Hi to all, I am using Java Topology Suite for a project. I have a sequence of coordinates which describes a irregular linear polygon. Actually it may describe an open "linearized curve", but for the moment assume that it describes a irregular polygon, i.e., the sequence is closed (linear ring), the first and the last points are the same. Some experiments show me that JTS allows the creation of a polygon (Polygon object) starting from a sequence which describes a selfintersecting polygon. Calling the "isValid" method returns "false". However the perimeter seems to be calculated well; but the area calculation seems not correct. I think that this is because JTS uses the formula described here http://en.wikipedia.org/wiki/Polygon#Area_and_centroid which does not provide the right value when considering selfintersecting polygons. I am wondering if JTS supports more or less directly the split of a selfintersecting polygon to a set of a nonintersecting polygons. If this would be possible, I can calculate the overall area as sum of the areas of the non selfintersecting polygons. Thanks in advance, Diego 
From: Martin Davis <mtnclimb@gm...>  20110628 17:48:22

Hmmm... actually that doesn't make it much easier. The QuadEdge is one of those data structures which pack a lot of complexity into a seemingly simple concept. It would take a lengthy explanation, which I don't have time to do right now. There's some material on the web, or you can look at the triangulation code to see how it works. Martin On Tue, Jun 28, 2011 at 10:14 AM, John Higgou <jhiggou@...> wrote: > I build a quadedge subdivision (thx to delaunay) and I would like to remove > some edges and to add some new ones. > Hope it will make it easier. > > J.H > > > 2011/6/28 Martin Davis <mtnclimb@...> > >> Good question.... I have to admit, I find working with QuadEdges to be >> extremely nonintuitive. The Incremental Delaunay algorithm is a fairly >> nice use of QuadEdges, since the structure naturally evolves as the >> triangulation is built. But for more ad hoc uses I'm not sure of the best >> way to construct a QES. >> >> I guess the first question is: what are you trying to represent? >> >> On Tue, Jun 28, 2011 at 3:18 AM, John Higgou <jhiggou@...> wrote: >> >>> Hello all, >>> >>> My question is about QuadEdge. >>> I have some difficulties for building a quadedge subdivision from >>> scratch. >>> Would it be possible to provide a small example showing how to proceed? >>> >>> Thanks for this excellent tool and keep it up. >>> J.H >>> >>> >>>  >>> All of the data generated in your IT infrastructure is seriously >>> valuable. >>> Why? It contains a definitive record of application performance, security >>> threats, fraudulent activity, and more. Splunk takes this data and makes >>> sense of it. IT sense. And common sense. >>> http://p.sf.net/sfu/splunkd2dc2 >>> _______________________________________________ >>> Jtstoposuiteuser mailing list >>> Jtstoposuiteuser@... >>> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >>> >>> >> >> >>  >> All of the data generated in your IT infrastructure is seriously valuable. >> Why? It contains a definitive record of application performance, security >> threats, fraudulent activity, and more. Splunk takes this data and makes >> sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunkd2dc2 >> _______________________________________________ >> Jtstoposuiteuser mailing list >> Jtstoposuiteuser@... >> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >> >> > 
From: John Higgou <jhiggou@gm...>  20110628 17:15:05

I build a quadedge subdivision (thx to delaunay) and I would like to remove some edges and to add some new ones. Hope it will make it easier. J.H 2011/6/28 Martin Davis <mtnclimb@...> > Good question.... I have to admit, I find working with QuadEdges to be > extremely nonintuitive. The Incremental Delaunay algorithm is a fairly > nice use of QuadEdges, since the structure naturally evolves as the > triangulation is built. But for more ad hoc uses I'm not sure of the best > way to construct a QES. > > I guess the first question is: what are you trying to represent? > > On Tue, Jun 28, 2011 at 3:18 AM, John Higgou <jhiggou@...> wrote: > >> Hello all, >> >> My question is about QuadEdge. >> I have some difficulties for building a quadedge subdivision from scratch. >> Would it be possible to provide a small example showing how to proceed? >> >> Thanks for this excellent tool and keep it up. >> J.H >> >> >>  >> All of the data generated in your IT infrastructure is seriously valuable. >> Why? It contains a definitive record of application performance, security >> threats, fraudulent activity, and more. Splunk takes this data and makes >> sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunkd2dc2 >> _______________________________________________ >> Jtstoposuiteuser mailing list >> Jtstoposuiteuser@... >> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >> >> > > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: G. Allegri <giohappy@gm...>  20110628 16:26:59

Thanks Martin for the hint. I was near to your soltuon, but I was missing the max distance from the BBOX vertices as a bound to the line length ;) giovanni 2011/6/28 Martin Davis <mtnclimb@...> > This is one idea: > > First of all, note that the only thing of interest here is the closest > point of intersection between the ray from the point in the given direction > (heading), and the segments of the ring. > > Get the envelope E of the ring R. > Compute the furthest distance D from the point P to the vertices of the > envelope E. > Construct a line segment consisting of two points, at distance + and  2D > from the point P in the direction of the heading > Intersect the line segment with the ring R. > For all vertices in the result, compute the nearest one to the original > point P. > > There's a few math details glossed over there, but all the code for doing > this should be in JTS right now. > > To compute a point at a distance D from P and at an angle A, use P2 = P + > (D cosA, D sinA) > > Martin > > On Tue, Jun 28, 2011 at 5:56 AM, G. Allegri <giohappy@...> wrote: > >> Hi all, >> many not efficient ways to solve this problem come to my mind, but I >> wonder if someone can suggest me a "best way" to implement a solution. >> I have a point and a heading value. I need to find the intersection point >> where the point hits (if it happens) a polygon's outer ring. The point can >> fall either inside or outside the polygon. >> >> thanks, >> Giovanni >> >> >> >> >>  >> All of the data generated in your IT infrastructure is seriously valuable. >> Why? It contains a definitive record of application performance, security >> threats, fraudulent activity, and more. Splunk takes this data and makes >> sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunkd2dc2 >> _______________________________________________ >> Jtstoposuiteuser mailing list >> Jtstoposuiteuser@... >> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >> >> > > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Martin Davis <mtnclimb@gm...>  20110628 16:12:34

Good question.... I have to admit, I find working with QuadEdges to be extremely nonintuitive. The Incremental Delaunay algorithm is a fairly nice use of QuadEdges, since the structure naturally evolves as the triangulation is built. But for more ad hoc uses I'm not sure of the best way to construct a QES. I guess the first question is: what are you trying to represent? On Tue, Jun 28, 2011 at 3:18 AM, John Higgou <jhiggou@...> wrote: > Hello all, > > My question is about QuadEdge. > I have some difficulties for building a quadedge subdivision from scratch. > Would it be possible to provide a small example showing how to proceed? > > Thanks for this excellent tool and keep it up. > J.H > > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Martin Davis <mtnclimb@gm...>  20110628 16:08:01

This is one idea: First of all, note that the only thing of interest here is the closest point of intersection between the ray from the point in the given direction (heading), and the segments of the ring. Get the envelope E of the ring R. Compute the furthest distance D from the point P to the vertices of the envelope E. Construct a line segment consisting of two points, at distance + and  2D from the point P in the direction of the heading Intersect the line segment with the ring R. For all vertices in the result, compute the nearest one to the original point P. There's a few math details glossed over there, but all the code for doing this should be in JTS right now. To compute a point at a distance D from P and at an angle A, use P2 = P + (D cosA, D sinA) Martin On Tue, Jun 28, 2011 at 5:56 AM, G. Allegri <giohappy@...> wrote: > Hi all, > many not efficient ways to solve this problem come to my mind, but I wonder > if someone can suggest me a "best way" to implement a solution. > I have a point and a heading value. I need to find the intersection point > where the point hits (if it happens) a polygon's outer ring. The point can > fall either inside or outside the polygon. > > thanks, > Giovanni > > > > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: G. Allegri <giohappy@gm...>  20110628 12:56:35

Hi all, many not efficient ways to solve this problem come to my mind, but I wonder if someone can suggest me a "best way" to implement a solution. I have a point and a heading value. I need to find the intersection point where the point hits (if it happens) a polygon's outer ring. The point can fall either inside or outside the polygon. thanks, Giovanni 
From: John Higgou <jhiggou@gm...>  20110628 10:18:55

Hello all, My question is about QuadEdge. I have some difficulties for building a quadedge subdivision from scratch. Would it be possible to provide a small example showing how to proceed? Thanks for this excellent tool and keep it up. J.H 
From: Martin Davis <mtnclimb@gm...>  20110627 16:26:00

I think that's essentially the algorithm that Michael Bedward's code is using. Although I think there's room for improvement in the "holeremoval" part. And I added a Delaunay Improvement phase, which works now but could also be made more efficient. Martin On Mon, Jun 27, 2011 at 9:22 AM, G. Allegri <giohappy@...> wrote: > Some time ago I found an implementation that seemed to be a little more > efficient then the usual ear clipping algorithm. Anyway I don't know your > implementation, but I share it if it can be of help: > http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf > > giovanni > > 2011/6/27 Martin Davis <mtnclimb@...> > >> Er, well, yes, that isn't in the production code yet. A couple of reasons >> for this: >> >>  There are actually still a couple of places in the algorithm which are >> suboptimal (O(n^2). I was holding out releasing to be able to enhance >> these >>  I'm considering splitting out algorithms like this into a separate >> filespace and Jar. I was going to use EarClipper as the prototype for >> this... >> >> Sorry if that impacts you. The current prerelease code should still run, >> however. >> >> Martin >> >> On Mon, Jun 27, 2011 at 6:34 AM, Thomas Leduc < >> thomas.leduc@...> wrote: >> >>> Hello Martin, >>> >>> Thanks for this really good job. I've synchronized my few devs to this >>> new release. Unfortunately, it seems that you decided not to embed the >>> earclipping algorithm's implementation (EarClipper, EdgeFlipper, >>> PolyTriangle classes). Why ? It looked efficient enough last April. >>> >>> >>> >> >>  >> All of the data generated in your IT infrastructure is seriously valuable. >> Why? It contains a definitive record of application performance, security >> >> threats, fraudulent activity, and more. Splunk takes this data and makes >> sense of it. IT sense. And common sense. >> http://p.sf.net/sfu/splunkd2dc2 >> >> _______________________________________________ >> Jtstoposuiteuser mailing list >> Jtstoposuiteuser@... >> https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser >> >> > 
From: G. Allegri <giohappy@gm...>  20110627 16:22:39

Some time ago I found an implementation that seemed to be a little more efficient then the usual ear clipping algorithm. Anyway I don't know your implementation, but I share it if it can be of help: http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf giovanni 2011/6/27 Martin Davis <mtnclimb@...> > Er, well, yes, that isn't in the production code yet. A couple of reasons > for this: > >  There are actually still a couple of places in the algorithm which are > suboptimal (O(n^2). I was holding out releasing to be able to enhance > these >  I'm considering splitting out algorithms like this into a separate > filespace and Jar. I was going to use EarClipper as the prototype for > this... > > Sorry if that impacts you. The current prerelease code should still run, > however. > > Martin > > On Mon, Jun 27, 2011 at 6:34 AM, Thomas Leduc <thomas.leduc@... > > wrote: > >> Hello Martin, >> >> Thanks for this really good job. I've synchronized my few devs to this new >> release. Unfortunately, it seems that you decided not to embed the >> earclipping algorithm's implementation (EarClipper, EdgeFlipper, >> PolyTriangle classes). Why ? It looked efficient enough last April. >> >> >> > >  > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunkd2dc2 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Martin Davis <mtnclimb@gm...>  20110627 16:08:03

Er, well, yes, that isn't in the production code yet. A couple of reasons for this:  There are actually still a couple of places in the algorithm which are suboptimal (O(n^2). I was holding out releasing to be able to enhance these  I'm considering splitting out algorithms like this into a separate filespace and Jar. I was going to use EarClipper as the prototype for this... Sorry if that impacts you. The current prerelease code should still run, however. Martin On Mon, Jun 27, 2011 at 6:34 AM, Thomas Leduc <thomas.leduc@...>wrote: > Hello Martin, > > Thanks for this really good job. I've synchronized my few devs to this new > release. Unfortunately, it seems that you decided not to embed the > earclipping algorithm's implementation (EarClipper, EdgeFlipper, > PolyTriangle classes). Why ? It looked efficient enough last April. > > > 
From: Thomas Leduc <thomas.leduc@ce...>  20110627 13:34:48

Hello Martin, Thanks for this really good job. I've synchronized my few devs to this new release. Unfortunately, it seems that you decided not to embed the earclipping algorithm's implementation (EarClipper, EdgeFlipper, PolyTriangle classes). Why ? It looked efficient enough last April. On Sun, Jun 26, 2011 at 7:32 AM, Martin Davis <mtnclimb@...> wrote: > ** > JTS 1.12 is now available for download at SourceForge. > > > http://sourceforge.net/projects/jtstoposuite/files/jts/1.12/jts1.12.zip/download > > Release Notes: > > Version 1.12 *Release Date: June 30, 2011* Functionality Improvements > >  Added new names for methods for computing Geometry equality: >  equals(Object) is a synonym for equalsExact(Geometry) >  equalsNorm(Geometry) automatically normalizes the operands >  equalsTopo(Geometry) computes topological equality, and is a > synonym for the original equals(Geometry) >  Added Geometry.norm() to provide nonmutating normalization >  Added Geometry.hashCode() to fulfill Java conventions >  Added LineIntersector.getEndpoint() method >  Added methods to CoordinateSequences to test for and create valid > rings >  Added minExtent and maxExtent to Envelope >  Added ability to compute SingleSided Buffers (invoked via BufferOpand > BufferParameters) >  Added GeometryPrecisionReducer >  Added ExtendedWKB SRID support to WKBWriter (thanks to Justin > Deoliviera) >  Improved PolygonShape to support floatingpoint coordinates >  Added GeometryShapeFactory.setRotation(double radians) method >  Added GeometricShapeBuilder API to support shape builder development >  Added RandomPointsBuilder to allow generating various random point > sets >  Added RandomPointsInGridBuilder to allow generating various random > point sets constrained to a grid >  Added KochSnowflakeBuilder >  Added SierpinskiCarpetBuilder >  Added MathUtil containing mathematics and numerical utility functions > >  Added Vector2D class providing vector operations >  Added DirectedEdgeStar.getNextCWEdge() method to planargraph API >  AffineTransformation enhanced to avoid numeric precision issues in > case of reflection in X=Y (coordinate flipping) >  Added LineSequencer.sequence() static convenience method >  Added error indicators to BufferDistanceValidator and > BufferResultValidator >  Added MinimumClearance class >  Added nearestNeighbours methods to STRtree > > Performance Improvements > >  Improved memory performance of ShapeWriter conversions (by tuning > coordinate and polygon conversion) >  Improved performance of RectangleIntersects by refining > SegmentIntersectionTester > > Robustness Improvements > >  Delaunay triangulation uses more robust formulation for the inCircle > test >  Voronoi computation now uses more robust formulation for the > circumcentre computation >  Force RectangleIntersects to always use segmentscanning to improve > robustness > > API Changes > >  Reduced visibility of internal classes in > com.vividsolutions.jts.geom.prep >  Reduced visibility of internal classes in > com.vividsolutions.jts.simplify >  Moved Matrix class into jts.math package >  Refactored internal offset curve generation classes in > com.vividsolutions.jts.operation.buffer package > > Bug Fixes > >  Fixed CoordinateArraySequence and PackedCoordinateSequence to > correctly handle Z ordinate in getCoordinate(int, Coordinate) >  Fixed LinearRing to have isClosed() return true for empty rings >  Fixed Geometry.union() to use more robust union algorithm. This > provides behaviour consistent with union(Geometry). >  Fixed Point.isValid() to validate POINT EMPTY correctly >  Fixed SnapIfNeededOverlayOp to throw the originating exception,which > contains meaningful coordinates >  Fixed GeometrySnapper to allow final vertices of LineStrings to snap > correctly >  Fixed buffer (OffsetCurveSetBuilder) to handle "flat" rings correctly > >  Fixed IsValidOp to handle reporting "Not Closed" errors on empty > rings correctly >  Fixed NestedRingTester (used by IsValidOp) to correctly handle the > case where a hole touches all the vertices of another hole (which is > invalid) >  Fixed ConvexHull to handle large geometries with fewer than 3 unique > points >  Fixed GeometryGraph to ignore empty hole rings when building graph >  Fixed LineMerger to skip lines with only a single unique coordinate >  Fixed ByteArrayInStream to pad byte buffers with zeroes >  Corrected spelling of SquarePointShapeFactory >  Fixed tolerance check in KdTree >  Updated MasterTester to include more unit tests > >  > JTS TestBuilder Functionality Improvements > >  Added [Zoom To Result] button >  Improved mark display, with floating point label >  Added more random geometry creation functions >  Added fractal geometry creation functions >  Improved threaded rendering handling to ensure only one frame drawn >  Added Magnify Topology capability >  Added Geometry Inspector dialog >  Better startup script, with autohome directory detection and > JTS_LIB_DIR environment variable (thanks to strk) >  Added logging Info window behaviour > > Bug Fixes > >  Fixed Stats panel to update when current test changes >  Fixed deleting single test case > > > > >  > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense.. > http://p.sf.net/sfu/splunkd2dc1 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > >  Thomas LEDUC 
From: Michael Bedward <michael.bedward@gm...>  20110627 04:20:53

Hello all, For anyone using Maven (voluntarily or otherwise) JTS version 1.12 is now available from Maven Central. The POM incantation is: <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts</artifactId> <version>1.12</version> </dependency> Note: the mavenized version excludes TestBuilder. Michael 
From: Michael Bedward <michael.bedward@gm...>  20110626 08:55:21

Many thanks Martin. That really is a bumper release full of good things ! I'll do the Maven version shortly. Michael On 26 June 2011 15:32, Martin Davis <mtnclimb@...> wrote: > JTS 1.12 is now available for download at SourceForge. > > http://sourceforge.net/projects/jtstoposuite/files/jts/1.12/jts1.12.zip/download > > Release Notes: > > Version 1.12 > > Release Date: June 30, 2011 > > Functionality Improvements > > Added new names for methods for computing Geometry equality: > > equals(Object) is a synonym for equalsExact(Geometry) > equalsNorm(Geometry) automatically normalizes the operands > equalsTopo(Geometry) computes topological equality, and is a synonym for the > original equals(Geometry) > > Added Geometry.norm() to provide nonmutating normalization > Added Geometry.hashCode() to fulfill Java conventions > Added LineIntersector.getEndpoint() method > Added methods to CoordinateSequences to test for and create valid rings > Added minExtent and maxExtent to Envelope > Added ability to compute SingleSided Buffers (invoked via BufferOp and > BufferParameters) > Added GeometryPrecisionReducer > Added ExtendedWKB SRID support to WKBWriter (thanks to Justin Deoliviera) > Improved PolygonShape to support floatingpoint coordinates > Added GeometryShapeFactory.setRotation(double radians) method > Added GeometricShapeBuilder API to support shape builder development > Added RandomPointsBuilder to allow generating various random point sets > Added RandomPointsInGridBuilder to allow generating various random point > sets constrained to a grid > Added KochSnowflakeBuilder > Added SierpinskiCarpetBuilder > Added MathUtil containing mathematics and numerical utility functions > Added Vector2D class providing vector operations > Added DirectedEdgeStar.getNextCWEdge() method to planargraph API > AffineTransformation enhanced to avoid numeric precision issues in case of > reflection in X=Y (coordinate flipping) > Added LineSequencer.sequence() static convenience method > Added error indicators to BufferDistanceValidator and BufferResultValidator > Added MinimumClearance class > Added nearestNeighbours methods to STRtree > > Performance Improvements > > Improved memory performance of ShapeWriter conversions (by tuning coordinate > and polygon conversion) > Improved performance of RectangleIntersects by refining > SegmentIntersectionTester > > Robustness Improvements > > Delaunay triangulation uses more robust formulation for the inCircle test > Voronoi computation now uses more robust formulation for the circumcentre > computation > Force RectangleIntersects to always use segmentscanning to improve > robustness > > API Changes > > Reduced visibility of internal classes in com.vividsolutions.jts.geom.prep > Reduced visibility of internal classes in com.vividsolutions.jts.simplify > Moved Matrix class into jts.math package > Refactored internal offset curve generation classes in > com.vividsolutions.jts.operation.buffer package > > Bug Fixes > > Fixed CoordinateArraySequence and PackedCoordinateSequence to correctly > handle Z ordinate in getCoordinate(int, Coordinate) > Fixed LinearRing to have isClosed() return true for empty rings > Fixed Geometry.union() to use more robust union algorithm. This provides > behaviour consistent with union(Geometry). > Fixed Point.isValid() to validate POINT EMPTY correctly > Fixed SnapIfNeededOverlayOp to throw the originating exception,which > contains meaningful coordinates > Fixed GeometrySnapper to allow final vertices of LineStrings to snap > correctly > Fixed buffer (OffsetCurveSetBuilder) to handle "flat" rings correctly > Fixed IsValidOp to handle reporting "Not Closed" errors on empty rings > correctly > Fixed NestedRingTester (used by IsValidOp) to correctly handle the case > where a hole touches all the vertices of another hole (which is invalid) > Fixed ConvexHull to handle large geometries with fewer than 3 unique points > Fixed GeometryGraph to ignore empty hole rings when building graph > Fixed LineMerger to skip lines with only a single unique coordinate > Fixed ByteArrayInStream to pad byte buffers with zeroes > Corrected spelling of SquarePointShapeFactory > Fixed tolerance check in KdTree > Updated MasterTester to include more unit tests > > ________________________________ > > JTS TestBuilder > > Functionality Improvements > > Added [Zoom To Result] button > Improved mark display, with floating point label > Added more random geometry creation functions > Added fractal geometry creation functions > Improved threaded rendering handling to ensure only one frame drawn > Added Magnify Topology capability > Added Geometry Inspector dialog > Better startup script, with autohome directory detection and JTS_LIB_DIR > environment variable (thanks to strk) > Added logging Info window behaviour > > Bug Fixes > > Fixed Stats panel to update when current test changes > Fixed deleting single test case > >  > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense.. > http://p.sf.net/sfu/splunkd2dc1 > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Martin Davis <mtnclimb@te...>  20110626 05:32:26

JTS 1.12 is now available for download at SourceForge. http://sourceforge.net/projects/jtstoposuite/files/jts/1.12/jts1.12.zip/download Release Notes: Version 1.12 /Release Date: June 30, 2011/ Functionality Improvements * Added new names for methods for computing Geometry equality: o equals(Object) is a synonym for equalsExact(Geometry) o equalsNorm(Geometry) automatically normalizes the operands o equalsTopo(Geometry) computes topological equality, and is a synonym for the original equals(Geometry) * Added Geometry.norm() to provide nonmutating normalization * Added Geometry.hashCode() to fulfill Java conventions * Added LineIntersector.getEndpoint() method * Added methods to CoordinateSequences to test for and create valid rings * Added minExtent and maxExtent to Envelope * Added ability to compute SingleSided Buffers (invoked via BufferOp and BufferParameters) * Added GeometryPrecisionReducer * Added ExtendedWKB SRID support to WKBWriter (thanks to Justin Deoliviera) * Improved PolygonShape to support floatingpoint coordinates * Added GeometryShapeFactory.setRotation(double radians) method * Added GeometricShapeBuilder API to support shape builder development * Added RandomPointsBuilder to allow generating various random point sets * Added RandomPointsInGridBuilder to allow generating various random point sets constrained to a grid * Added KochSnowflakeBuilder * Added SierpinskiCarpetBuilder * Added MathUtil containing mathematics and numerical utility functions * Added Vector2D class providing vector operations * Added DirectedEdgeStar.getNextCWEdge() method to planargraph API * AffineTransformation enhanced to avoid numeric precision issues in case of reflection in X=Y (coordinate flipping) * Added LineSequencer.sequence() static convenience method * Added error indicators to BufferDistanceValidator and BufferResultValidator * Added MinimumClearance class * Added nearestNeighbours methods to STRtree Performance Improvements * Improved memory performance of ShapeWriter conversions (by tuning coordinate and polygon conversion) * Improved performance of RectangleIntersects by refining SegmentIntersectionTester Robustness Improvements * Delaunay triangulation uses more robust formulation for the inCircle test * Voronoi computation now uses more robust formulation for the circumcentre computation * Force RectangleIntersects to always use segmentscanning to improve robustness API Changes * Reduced visibility of internal classes in com.vividsolutions.jts.geom.prep * Reduced visibility of internal classes in com.vividsolutions.jts.simplify * Moved Matrix class into jts.math package * Refactored internal offset curve generation classes in com.vividsolutions.jts.operation.buffer package Bug Fixes * Fixed CoordinateArraySequence and PackedCoordinateSequence to correctly handle Z ordinate in getCoordinate(int, Coordinate) * Fixed LinearRing to have isClosed() return true for empty rings * Fixed Geometry.union() to use more robust union algorithm. This provides behaviour consistent with union(Geometry). * Fixed Point.isValid() to validate POINT EMPTY correctly * Fixed SnapIfNeededOverlayOp to throw the originating exception,which contains meaningful coordinates * Fixed GeometrySnapper to allow final vertices of LineStrings to snap correctly * Fixed buffer (OffsetCurveSetBuilder) to handle "flat" rings correctly * Fixed IsValidOp to handle reporting "Not Closed" errors on empty rings correctly * Fixed NestedRingTester (used by IsValidOp) to correctly handle the case where a hole touches all the vertices of another hole (which is invalid) * Fixed ConvexHull to handle large geometries with fewer than 3 unique points * Fixed GeometryGraph to ignore empty hole rings when building graph * Fixed LineMerger to skip lines with only a single unique coordinate * Fixed ByteArrayInStream to pad byte buffers with zeroes * Corrected spelling of SquarePointShapeFactory * Fixed tolerance check in KdTree * Updated MasterTester to include more unit tests  JTS TestBuilder Functionality Improvements * Added [Zoom To Result] button * Improved mark display, with floating point label * Added more random geometry creation functions * Added fractal geometry creation functions * Improved threaded rendering handling to ensure only one frame drawn * Added Magnify Topology capability * Added Geometry Inspector dialog * Better startup script, with autohome directory detection and JTS_LIB_DIR environment variable (thanks to strk) * Added logging Info window behaviour Bug Fixes * Fixed Stats panel to update when current test changes * Fixed deleting single test case 
From: Martin Davis <mtnclimb@gm...>  20110623 15:53:55

There's two options to do this: 1) The QuadEdgeSubdivision from which the Voronoi diagram is generated is a fully topological structure. If you're brave you can work with this structure to find adjacency relationships. It's a bit hard to wrap your head around to navigate, though. 2) You can build a simple Polygonal Coverage topological coverage yourself. For your need (polygon adjacency) you will need two structures  a PolygonFace and an Edge. The PolygonFace contains a list of all Edges. The Edge contains a reference to its Right and Left polygon, and to the line segment on which it is based. This line segment should be normalized to allow equality comparison. To build this structure do the following:  Create a set of Edges  For each Polygon, create a PolygonFace  For each edge in the Polygon, look up the Edge in the set. If it does not exist, create it and add it to the set.  Add the PolygonFace to the Edge and add the Edge to the PoylgonFace. You'll also probably want a map from Polygon to associated PolygonFace. You can now trace from Polygon to PolygonFace, to Edges, to adjacent PolygonFaces. 
From: Chris Nicholas <chrisgnicholas@at...>  20110622 22:11:01

hmmm  just wondering if there's a reasonable way to find neighbors in a Vornoi tesselation... I was looking to implement something like Lloyd's algorithms, as per: http://en.wikipedia.org/wiki/Lloyd%27s_algorithm , to partition a 2D set of points into somewhat equally"filled" polygons; if a cell knew its neighbors, and it had more points, it could reassign some of its points to its neighbor. thanks!! Chris 
From: Martin Davis <mtnclimb@gm...>  20110620 18:46:00

Mike, Good idea. I've found this to be a bit painful myself sometimes. I'll give this some thought to see how best to design and implememt this. One slight tricky part is how to indicate whether a set of geometries should be imported as GEOMETRYCOLLECTION or MULTIPOLYGON. But probably just picking one, add then providing a control to switch the container type should suffice. Martin On Sun, Jun 19, 2011 at 4:52 PM, Mike Titov <titovmc@...> wrote: > > PS: > Is it possible to add to JTS TestBuilder an option, that can provide > surrounding input with geometrycollection() or proper collection type? > For example, in many cases i need to view arrayList of polygons, so I > copy data from debug, that looks like : > "[POLYGON((.....)),POLYGON((....)).......POLYGON((....))]". > When pasting buffer to JTS TestBuilder Input it removes all polygons, > except first, so i always have to surround text with > geometrycollection( text from buffer ) or MULTIPOLYGON( text from > buffer ) and remove "[","]". It spends much time. > > >  > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephoxdev2dev > _______________________________________________ > Jtstoposuiteuser mailing list > Jtstoposuiteuser@... > https://lists.sourceforge.net/lists/listinfo/jtstoposuiteuser > > 
From: Martin Davis <mtnclimb@gm...>  20110620 18:42:29

Mike, JTS has certainly been giving you a hard time recently.. or is it the other way around? Your model of what's going wrong isn't quite accurate. The buffer algorithm is fully capable of handling selfintersections. The real problem is likely a robustness error arising from the lower precision model. Lower precision tends to exacerbate robustness issues (as you've already noticed!) You may have noticed that this case works fine when run with full FLOATING precision. So this could be categorized as halfway between a bug and a design limitation. Unfortunately, these things tend to be very difficult to fix, so there probably won't be a fix in the short term. The best workaround I can offer at this point is to compute the buffer using FLOATING precision, and then use GeometryPrecisionReducer to reduce the precision back to your 1.0e9 FIXED precision model. I think this should be fairly robust, since buffers tend to have somewhat simplified geometry. Martin On Sun, Jun 19, 2011 at 4:52 PM, Mike Titov <titovmc@...> wrote: > Hello, Martin. > > I need your advise again. I've got a valid simple polygon in precision > model=1e9 > > 1. POLYGON ((76489 76488, 76489 76488.999999999, 76491.000000001 > 76488.999999999, 76491.000000001 76491.000000001, 76489 > 76491.000000001, 76489 76492, 76493 76492, 76493 76488, 76489 76488)) > > polygon.buffer(0.5) throws an > com.vividsolutions.jts.geom.TopologyException : > com.vividsolutions.jts.geom.TopologyException: depth mismatch at > (76491.000000006, 76491.500000001, NaN) > > As i understand it, an exception has been throwing because the result > of buffer operation has selfintersection. You can see it, if use > BufferOffsetCurve(). > > So what to do in such case ? > Surround every buffer(..) with try{}catch() and try to reduce > precision, or get buffer(value +\ precision.scale) or get > BufferOffsetCurve and remove selfintersection with another buffer or > with some algorithm and then polygonize? > > Or may be it's a bug of buffer() operation and possible it will be fixed? > > 