Revision: 6188
http://sourceforge.net/p/jump-pilot/code/6188
Author: michaudm
Date: 2019-06-19 12:26:35 +0000 (Wed, 19 Jun 2019)
Log Message:
-----------
Improve calculation of polygon width/length attributes
Modified Paths:
--------------
core/trunk/ChangeLog
core/trunk/src/org/openjump/core/ui/plugin/tools/AddGeometryAttributesPlugIn.java
Modified: core/trunk/ChangeLog
===================================================================
--- core/trunk/ChangeLog 2019-05-25 07:28:19 UTC (rev 6187)
+++ core/trunk/ChangeLog 2019-06-19 12:26:35 UTC (rev 6188)
@@ -3,6 +3,9 @@
# 2. make sure that lines break at 80 chars for constricted display situations
#<-------------------------------- 80 chars
---------------------------------->#
+2019-06-19 mmichaud <[email protected]>
+ * Improve calculation of polygon width/length attributes
+
2019-05-25 mmichaud <[email protected]>
* Update GraphToolBox extension to 0.6.2 (fix skeletonizer plugin)
Modified:
core/trunk/src/org/openjump/core/ui/plugin/tools/AddGeometryAttributesPlugIn.java
===================================================================
---
core/trunk/src/org/openjump/core/ui/plugin/tools/AddGeometryAttributesPlugIn.java
2019-05-25 07:28:19 UTC (rev 6187)
+++
core/trunk/src/org/openjump/core/ui/plugin/tools/AddGeometryAttributesPlugIn.java
2019-06-19 12:26:35 UTC (rev 6188)
@@ -25,6 +25,7 @@
package org.openjump.core.ui.plugin.tools;
+import com.vividsolutions.jts.algorithm.MinimumDiameter;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jump.I18N;
@@ -323,7 +324,12 @@
return (((length / 2.0) - Math.sqrt(val)) / 2.0);
} else {
//diam\xE8tre du disque de m\xEAme surface, sur une surface
ramass\xE9e
- return 2.0 * Math.sqrt(area / Math.PI);
+ //return 2.0 * Math.sqrt(area / Math.PI);
+ //improve width calculation for compact geometries
+ MinimumDiameter diameter = new MinimumDiameter(g);
+ Geometry minRectangle = diameter.getMinimumRectangle();
+ double ratio = Math.sqrt(minRectangle.getArea()/g.getArea());
+ return diameter.getLength()/ratio;
}
} else return null;
}
@@ -338,7 +344,12 @@
return area / (((length / 2.0) - Math.sqrt(val)) / 2.0);
} else {
//diam\xE8tre du disque de m\xEAme surface, sur une surface
ramass\xE9e
- return 2.0 * Math.sqrt(area / Math.PI);
+ //return 2.0 * Math.sqrt(area / Math.PI);
+ //improve width calculation for compact geometries
+ MinimumDiameter diameter = new MinimumDiameter(g);
+ Geometry minRectangle = diameter.getMinimumRectangle();
+ double ratio = Math.sqrt(minRectangle.getArea()/g.getArea());
+ return g.getArea()/(diameter.getLength()/ratio);
}
} else return null;
}
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel