Chris,

I had time to read through your plan for the JTin Library tonight
after dinner. I thought I would need time to write my response, but I
have nothing to say. You have done really excellent work!

I can tell you have been programming for a lot longer than me. The
design for the library that you describe appears to be well-thought
out. It is simple and extendable. Even better, you have ideas that I
didn't think off, like using a MultiPolygon to represent a TIN in
OpenJUMP.

If the other OpenJUMP programmers have no objections, then I encourage
you to move forward with your coding. I look forward to seeing your
work, and after the summer is over adding my own contributions to the
library as you describe in your e-mail.

Awesome job!

Landon

On Mon, May 5, 2008 at 2:51 PM, Larry Becker <[EMAIL PROTECTED]> wrote:
> Chris,
>
>
> >I'm still not 100% clear on OpenJUMP's rendering
> >pipeline, but it looks like I will implement a new
> >instance of com.vividsolutions.jump.workbench.ui.renderer.Renderer
>
>  >that will work with TINs such that elevation color
> >bands and hillshades can be implemented by
> >coloring/shading each triangle on the fly...
>
> You will need to implement a Style in order to effectively control the
> rendering of the layer.  I have created a sample Style called AreaStyle that
> colorizes polygons on a layer based on their area.  To use it, you will need
> to put it in the correct location in the project, run OpenJump, load a
> polygon layer, make it Editable, and use the BeanShell interface to invoke
> the following code:
>
> {
> import com.vividsolutions.jump.workbench.model.*;
> import org.openjump.core.ui.style.*;
> layer = wc.getLayerNamePanel().chooseEditableLayer();
> if (layer != null) {
>       wc.getLayerNamePanel().chooseEditableLayer().addStyle( new AreaStyle()
> );
>  }
> }
>
> The layer should then turn multi-colored.  You should be able to do
> something very similar to hillshade.
>
> regards,
> Larry Becker
>
>
>
> On Mon, May 5, 2008 at 3:09 PM, Stefan Steiniger <[EMAIL PROTECTED]> wrote:
>
> > on the eclipse issue.
> >
> > - leave them in separate projects.
> > - create a project just for your code...
> > - in the build path options for your project add the two projects (jts
> > and jump)
> > - make also changes to the run option:
> >
> > please have a look here:
> > http://openjump.org/wiki/show/Documentation
> >
> > scroll down to the developer section (especially to "how to use and make
> > own plugins"))
> > most of the stuff should be explained there (i.e. the use of a
> > properties file, which I would recommend)
> >
> > write again if you have problems.. so we do not loose time with that:
> >
> > stefan
> >
> >
> >
> >
> > Sunburned Surveyor wrote:
> > > Chris,
> > >
> > > It looks like you have been busy.
> > >
> > > I will print your e-mail and review it tonight after work. Hopefully I
> > > can respond with comments tomorrow.
> > >
> > > Landon
> > >
> > > On Mon, May 5, 2008 at 12:30 PM, Christopher <[EMAIL PROTECTED]>
> wrote:
> > >> I spent most of last week continuing my reading about
> > >> the technical aspects of meshes, then spent the latter
> > >> part of the week delving into the OpenJUMP/JTS code
> > >> base to figure out how to best integrate TIN
> > >> functionality.
> > >>
> > >> I have things pretty much squared away in my mind
> > >> about where I'm going with the TIN module and how I'm
> > >> going to get there, but now that I'm beginning to
> > >> start the coding, I have begun to bang my head against
> > >> the eclipse IDE. I've never used eclipse before, and
> > >> I'm finding it impossible to do things that should be
> > >> simple like unite the jts cvs tree and the jump-pilot
> > >> svn tree into a project that I can build, run, and
> > >> modify without breaking dependencies left and right. I
> > >> have everything checked out and in the workspace, but
> > >> can't put it all into one project. And the eclipse
> > >> tutorials aren't helping one bit. I'm close to just
> > >> using a text editor, but in the long run, it would
> > >> make things much easier to use a good IDE and if I can
> > >> get the dependency hell figured out, eclipse would
> > >> make a good IDE. I have a message into
> > >> SunburnedSurveyer to see if we can meet this week and
> > >> do a quick in person eclipse orientation.
> > >>
> > >> So, instead of java interfaces and class stubs, I'll
> > >> lay out in longhand the specifics I have planned.
> > >>
> > >>
> > >>
> > >> tin Package:
> > >>
> > >> TriangulatedIrregularNetwork extends MultiPolygon (I'm
> > >> debating whether or not to directly inherit from
> > >> MultiPolygon or to add more interfaces to create a
> > >> MultiPolygon->Surface->PolygonalSurface->TIN hierarchy
> > >> that is closer to the Simple Features spec)
> > >>
> > >> In order for the TIN code to integrate seamlessly with
> > >> OpenJUMP, the interface to the in-memory
> > >> representation of the TIN should be as compatible as
> > >> possible with the JTS. By making the TIN a
> > >> MultiPolygon with the added restrictions that all
> > >> Polygons are non-overlapping, connected triangles, all
> > >> the code that works with GeometryCollections can be
> > >> made to easily work with TINs. Internally, the TIN
> > >> surface will be represented by a triangle-table which
> > >> is a simplified version of a quad-edge data structure.
> > >> Each record in the table represents a triangle and
> > >> contains the three vertex points and three table keys
> > >> that point to the bordering triangles within the
> > >> triangle table. The vertexes will be stored as raw
> > >> doubles and the lines inferred. When the class is
> > >> queried for a triangle or point, the returned geometry
> > >> object will be created on the fly from the internal
> > >> data structure. If this proves too slow, then it might
> > >> be worth the space tradeoff to store the vertexes as
> > >> Point Objects. This data structure is compact, fast
> > >> and can accomplish anything we would want to do with a
> > >> TIN.
> > >>
> > >> In addition to the inherited GeometryCollection
> > >> methods and the methods specified in the Simple
> > >> Features spec for Surfaces and PolyhedralSurfaces, the
> > >> TIN class should also have TIN specific methods like:
> > >> * extractContourBands: given a height increment and
> > >> baseline (default = 0), return a MultiLineString
> > >> containing the contour bands separated by the given
> > >> height increment.
> > >> * subset: given an envelope or even a linear ring,
> > >> return a TIN that contains all the triangles of the
> > >> current TIN that lie within the given boundary.
> > >>
> > >> I'm still not 100% clear on OpenJUMP's rendering
> > >> pipeline, but it looks like I will implement a new
> > >> instance of
> > >> com.vividsolutions.jump.workbench.ui.renderer.Renderer
> > >> that will work with TINs such that elevation color
> > >> bands and hillshades can be implemented by
> > >> coloring/shading each triangle on the fly. If this
> > >> winds up being too slow, I might have to add
> > >> pre-computed normals to the TIN's triangle-table.
> > >>
> > >>
> > >>
> > >> TinFactory
> > >> For efficiency sake, the TIN should be immutable, thus
> > >> a Factory will be needed to create a TIN fully formed.
> > >> This Factory would be analogous to the GeometryFactory
> > >> class. Various methods would take input lines and
> > >> points and output a fully constructed instance of a
> > >> TriangulatedIrregularNetwork. The first factory I'll
> > >> work on will take a MultiPoint set and use Chew's
> > >> algorithm found in
> > >> org.openjump.core.graph.delauneySimplexInsert. This
> > >> algorithm isn't the fastest, and doesn't deal with
> > >> breaklines, but it is already in the OpenJUMP code
> > >> base and will help to get the TIN pipeline working
> > >> faster. The next factory to be coded will take a
> > >> MultiPoint collection and a MultiLineString collection
> > >> and will use a constrained delaunay triangulation to
> > >> create the TIN. We may want to do a conforming
> > >> delaunay triangulation instead and add steiner points
> > >> on the breaklines in order to not have huge triangles
> > >> next to the breaklines. Steiner points are also the
> > >> reason why the TIN class should contain the copy of
> > >> it's breaklines, because the breaklines in the TIN
> > >> might be different than the breaklines that were
> > >> initially given to the factory (the TIN's breaklines
> > >> would have more points). Later on down the road, I
> > >> would also like to make a TinFactory that takes in a
> > >> MultiLineString of breaklines and a stream of Points,
> > >> then builds up the TIN until the stream closes. This
> > >> will be useful when we move beyond OpenJUMP's in
> > >> memory representation and embrace larger TINs.
> > >>
> > >>
> > >>
> > >> tin.io Package
> > >>
> > >> This package will contain classes that can turn
> > >> various types of input files into MultiPoint / point
> > >> streams and MultiLineString geometry to be input into
> > >> a TinFactory. There will also be classes that can
> > >> export a TIN to a file and then be read it back into a
> > >> TIN class. At first only Well Known Text input and
> > >> output will be implemented. Eventually various DEM
> > >> files will be supported for input and various 3D
> > >> formats supported for input and output (i.e. W3's
> > >> X3D).
> > >>
> > >>
> > >>
> > >>
> > >> tin.viewshed Package
> > >>
> > >> All the papers I've read about viewsheds use a
> > >> separate data structure for the viewshed that is built
> > >> from the TIN. This data structure is then queried. The
> > >> query could be a point or line with the return value
> > >> being a MultiPolygon containing regions that can be
> > >> seen from the input feature. The query could also be
> > >> two features with the return value being a boolean
> > >> indicating whether or not the features are visible
> > >> from each other. The downside to viewsheds is that
> > >> they have a big memory footprint: the most versatile
> > >> data structure has a table for each point that
> > >> contains a boolean value for every other point in the
> > >> TIN indicating if it is visible or not. Because of
> > >> this, viewsheds shouldn't be integrated into the TIN
> > >> class and should only be used when requested.
> > >>
> > >>
> > >>
> > >>
> > >> tin.watershed Package
> > >>
> > >> Much like the viewshed package, separate data
> > >> structures that are built using the TIN will be
> > >> needed.
> > >>
> > >>
> > >>
> > >>
> > >> tin.multitriangulation Package
> > >>
> > >> The classes in this package will implement a
> > >> multi-resolution triangulation model. The MT data
> > >> structure can return a TIN class with a specified
> > >> level of detail. The LOD can be constant over the
> > >> whole surface, or can be higher at specified locations
> > >> and coarser at others. This won't be of much use if
> > >> the TIN can fit in memory, but once the TIN gets
> > >> bigger, a multi-resolution data structure can use a
> > >> file or database backing and return a TIN in a
> > >> resolution that will fit in memory and cover the
> > >> points of interest at the required detail. This might
> > >> wind up being implemented solely within PostGIS/WMS,
> > >> so that OpenJUMP can simply issue a WMS query and
> > >> receive a TIN object as a reply.
> > >>
> > >>
> > >>
> > >>
> > >> Again, sorry for not coming bearing code today. I
> > >> haven't been slacking though; in addition to reading
> > >> more about about meshes and TINs than I ever imagined
> > >> existed and trying to wrap my head around the entire
> > >> OpenJUMP/JTS code base, the code structure laid out
> > >> above is the third or fourth revision I've come up
> > >> with. I think this layout will be the best balance
> > >> between OpenJUMP integration and ability to be used by
> > >> third parties. Previous designs had put more emphasis
> > >> on the TIN library being independent from OpenJUMP,
> > >> but those eventually broke down into a collection of
> > >> bad hacks when I tried to figure out how to integrate
> > >> it into OpenJUMP. I have since decided that OpenJUMP
> > >> will the the primary target and third party use will
> > >> be kept in the back of my mind. I'll try not to make
> > >> life harder than it needs to be for third party
> > >> developers, but when needs conflict, I'm siding with
> > >> the OpenJUMP way.
> > >>
> > >> Comments and suggestions appreciated,
> > >>
> > >> --Christopher
> > >>
> > >> PS I'm posting the meat of this message on the wiki.
> > >>
> > >>
> > >>
> ____________________________________________________________________________________
> > >> Be a better friend, newshound, and
> > >> know-it-all with Yahoo! Mobile.  Try it now.
> http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
> > >>
> > >>
> -------------------------------------------------------------------------
> > >> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> > >> Don't miss this year's exciting event. There's still time to save $100.
> > >> Use priority code J8TL2D2.
> > >>
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> > >> _______________________________________________
> > >> Jump-pilot-devel mailing list
> > >> Jump-pilot-devel@lists.sourceforge.net
> > >> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > >>
> > >
> > >
> -------------------------------------------------------------------------
> > > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> > > Don't miss this year's exciting event. There's still time to save $100.
> > > Use priority code J8TL2D2.
> > >
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> > > _______________________________________________
> > > Jump-pilot-devel mailing list
> > > Jump-pilot-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> > >
> > >
> >
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> > Don't miss this year's exciting event. There's still time to save $100.
> > Use priority code J8TL2D2.
> >
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> > _______________________________________________
> > Jump-pilot-devel mailing list
> > Jump-pilot-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >
>
>
>
> --
> http://amusingprogrammer.blogspot.com/
> -------------------------------------------------------------------------
>  This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
>  Don't miss this year's exciting event. There's still time to save $100.
>  Use priority code J8TL2D2.
>
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> _______________________________________________
>  Jump-pilot-devel mailing list
>  Jump-pilot-devel@lists.sourceforge.net
>  https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to