Hi everyone,
A bit more than ten years ago, I developed a concave hull lib based on
JTS, as well as the first version of the OJ extension (which is part of
OJ PLUS). Since then, Michael has kindly updated this extension. Last
year, Martin David released another concave hull algorithm, which is now
part of JTS (see [1] and [2]). His main algorithm is based on the same
paper than the one I used, and used a similar implementation, i.e. by
generating an alternative way of storing the results of the Delaunay
triangulation (to know about triangle adjacency and to be able to create
a concave hull by erosion). On top of that, he added numerous
improvements in order to help with the choice of the threshold, and
developed as well other well-known algorithms such as the alpha shape
one. Therefore, it would probably be a good idea to move from my
previous implementation to the ones directly integrated into JTS, either
by default in OJ or by creating a new extension. In both cases, I would
be happy to do it. I just need to know, in the case it is integrated by
default, where to add it: next to the Convex hull (Tools / Analysis /
Convex hull) ? in Tools / Analysis / Geometry functions (if possible and
compatible with the current parameter) ? both ? Just let me know what
you think.
During the Git migration process, we discussed about the creation of a
possible extension manager. I just did some tests and I managed to
dynamically load a new extension with just a few lines of code based on
the PlugInManager, and can be used straight away. The new installed
extension will also automatically be loaded during any future launches.
Extensions could be easily removed, installed from a centralised online
repository (for example, from a github.io page) but also from any other
compatible repository. The only problems that I can see would be:
- how to update an already installed extension, i.e. how to uninstall
the current version then dynamically reinstalled an updated version of
the same extension without the need to relaunch OJ (it is easy to
physically delete the previous version but how to properly "unload" the
associated Java classes? Is it easily possible?),
- to properly manage the versioning, i.e. how to properly synchronise
local vs remote information about the extensions -- but it should be
alright with a bit of work,
- the extensions that require one or several dependencies, in other
words, how to avoid a local conflict if two different versions of the
same dependency are installed?
Would you still be interested about such functionality? If yes, I would
rather create a first implementation as an extension itself, in order to
avoid interfering with OJ core. If it satisfies all requirements, it
could then be integrated in OJ as an integrated plugin (like many
functionalities are). Finally, would you prefer configuration / metadata
files based on json or xml?
Just let me know your thoughts about both subjects.
All the best,
Eric
[1] https://lin-ear-th-inking.blogspot.com/2022/01/concave-hulls-in-jts.html
[2]
http://lin-ear-th-inking.blogspot.com/2022/05/concave-hulls-of-polygons.html
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel