I checked out JCS, but there was an odd dependency on JUMP and GUI-based
operations. I ultimately cannot use a GUI, so it's really just the API
I'm interested in; however, JCS' API was rather difficult to directly
connect to my sequence of needs. Looking through the source did provide
some insight, though.
Now, I'm at a point where my requirements are better understood, so I'll
try to clarify:
1. A set of input LineStrings need to be noded and/or snapped along
their overlapping (within a tolerance) and co-directional segments only.
2. When LineStrings are noded/snapped, ShapeIds and a length index
(relative to the parent LineString) need to be mapped to the resulting
LineStrings.
I've found most of what I need in JTS, like snapping through
GeometrySnapper and noding through a custom SegmentStringMerger,
IntersectionAdder and SegmentStringDisolver, but the former doesn't make
for easy/any mapping or length indexing, and with the latter it's not
apparent how one would "snap" (i.e. remove/dissolve overlapping lines) and
end up with a connected line network. Also, JTS can't index the input
LineStrings (by length in this case) if they're not simple, so I've had to
completely node them individually and produce the index before noding the
entire network. The "complete" noding I'm talking about is the JTS generic
noding that introduces nodes for all intersections, which breaks things
down more than I'd like.
Naturally, I've gone the path of custom noding classes, since it's the only
way I can create the mappings, but it's clearly not satisfying.
Next, I need to create a directed graph that doesn't simply attach all
in/out lines to shared vertices. There should be separate nodes for each
direction so that u-turns aren't possible all over the place.
Currently, I'm using DirectedLineStringGraphGenerator in OpenGeo, so those
requirements aren't being fulfilled, and I expect I'll have to build a
graph manually.
On Thu, Feb 28, 2013 at 12:44 AM, David Zwiers <[email protected]>wrote:
> Check out JCS (http://www.vividsolutions.com/jcs/) - there are a couple
> graph structure tools. We've successfully built a polygonal coverage
> manipulation model over JCS, so you should be able to do roughly the same
> thing - just ignore the polygon faces and visualize how the polygon rings
> are represented as a graph structure, should be similar to what you're
> looking for.
>
> David
>
> On Wed, Feb 27, 2013 at 6:04 PM, brandon willard <[email protected]
> > wrote:
>
>> Looking over my problem again, the result of a large union (e.g. using
>> Geometry.union or CascadePolygonUnion) does produce the output lines I
>> need, but then I lose any graph-like structure that would associate the
>> input lines with those union-produced lines. (I wasn't clear about that
>> requirement, sorry)
>>
>> How can I produce/maintain a relationship between the input lines and the
>> "broken down" lines the union produces, without brute force checking
>> overlaps between the two?
>>
>>
>> On Wed, Feb 27, 2013 at 9:15 AM, Justin Deoliveira
>> <[email protected]>wrote:
>>
>>> Hey Brandon,
>>>
>>> I am not 100% sure i undersand what you are looking for. Are you looking
>>> to node the graph at intersections and line string endings?
>>>
>>> I am not sure if this will be what you are looking for but there is a
>>> very cool effect that can be achieved with JTS. Basically take all the line
>>> strings and join them into one multi linestring. Then union that multi
>>> linestring with a single point that exists on it. The result is a multi
>>> linestring where all the individual linestrings are properly noded at
>>> intersections.
>>>
>>> -Justin
>>>
>>>
>>> On Tue, Feb 26, 2013 at 9:47 AM, brandon willard <
>>> [email protected]> wrote:
>>>
>>>> Hello,
>>>>
>>>> I'm working with a bunch of LineStrings that mostly overlap, and I
>>>> would like to find a way to build a graph, or manipulate the geometries, so
>>>> that it ends up with vertices from the points at which they stop
>>>> overlapping.
>>>> E.g. L1 = a->...->b->c, L2 = a->...->b->d and get vertices (a, b, c, d)
>>>>
>>>> I realize that it's possible to do this with a combination of JTS
>>>> intersections/differences and whatnot, but I'm working with a lot of a
>>>> LineStrings and was hoping there was something specifically for this that I
>>>> passed over.
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Everyone hates slow websites. So do we.
>>>> Make your web apps faster with AppDynamics
>>>> Download AppDynamics Lite for free today:
>>>> http://p.sf.net/sfu/appdyn_d2d_feb
>>>> _______________________________________________
>>>> GeoTools-GT2-Users mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
>>>>
>>>>
>>>
>>>
>>> --
>>> Justin Deoliveira
>>> OpenGeo - http://opengeo.org
>>> Enterprise support for open source geospatial.
>>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Everyone hates slow websites. So do we.
>> Make your web apps faster with AppDynamics
>> Download AppDynamics Lite for free today:
>> http://p.sf.net/sfu/appdyn_d2d_feb
>> _______________________________________________
>> GeoTools-GT2-Users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
>>
>>
>
------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
GeoTools-GT2-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users