问题标签 [jscience]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
105 浏览

java - JScience:创建一个定义为多个变量组合的单元

几个月前我发现了 JScience,它对我的​​项目有很大的帮助,尽管我正在为一件事而苦苦挣扎。

我正在尝试创建一个PressureHead(又名水柱)单元,可以直接使用给定值进行转换,也可以使用给定值Length间接进行转换。PressureVolumetricDensity

寻找压力:Density × Gravity × Head = Pressure

这是来自Wikipedia的示例转换:

1 cmH 2 O (4°C) = 999.9720 kg/m 3 × 9.80665 m/s 2 × 1 cm = 98.063754138 Pa

1 cmH 2 O 可以直接换算成1 cm。

假设我知道以 Pa 为单位的压力,并想找到以 mH 2 O 为单位的压头,这是我在项目中最常进行的转换。我还需要知道流体的密度。压力和密度是可变输入。重力也必须是已知的公式,但出于我的目的,它可以固定为标准重力。

查找压头:Pressure / (Density × Gravity) = Head

为简单起见,我只是重新利用了上述示例中的值,将压力乘以 100 得到 1 mH 2 O 而不是 1 cmH 2 O。

9806.3754138 Pa / (999.9720 kg/m 3 × 9.80665 m/s 2 ) = 1 mH 2 O

看起来 JScience 可能足够灵活以允许这样的单元,但我还没有看到任何示例来帮助我创建它。最坏的情况,我可能会满足于使用 util 方法在它们之间进行转换。

编辑

我希望看到的一些理想用法示例:

单位之间的转换PressureHead很容易。我可以像这样定义其他单位:

对于上面的理想用法,我需要子类化Amount和重载to()and doubleValue()。我怀疑是否有更合适的方式进行转换(尽管不是很漂亮),它涉及子类UnitConverter化和/或DerivedUnit基于 - 的类之一。

我的一部分想放弃,走捷径(和丑陋)的 util 方法,这样我就可以继续做更重要的事情,另一部分想找到一个让我更喜欢 JScience 的解决方案。

0 投票
1 回答
391 浏览

java - 不同依赖项上的类冲突

我对我的项目的 2 个依赖项有相同的类。库 unit-api-1.0(它是 org.geotools 的依赖项)和 jscience-4.3.1 都有类javax.measure.quantity.Length

当我尝试使用 Length 参数化Measure时,出现错误:

基本上,两个接口 Length 都扩展了接口 Quantity,如下所示:

https://www.javadoc.io/static/javax.measure/unit-api/1.0/javax/measure/quantity/Length.html http://jscience.org/api/javax/measure/quantity/Length.html

但是其中一个扩展了 Quantity,而另一个扩展了 Quantity。不知何故,它们彼此不兼容,编译器使用了错误的编译器并给了我这个错误。

有办法以某种方式管理这种情况吗?

0 投票
0 回答
90 浏览

java - 库 org.geotools.util 缺少 org.opengis.util.InternationalString?

运行下面的代码时,我看到以下异常...

java.lang.IncompatibleClassChangeError: org/opengis/util/InternationalString 不是 java.base/java.lang.ClassLoader.defineClassImpl(Native Method) ~[na:na] at java.base/java.lang.ClassLoader 的接口。 defineClassInternal(ClassLoader.java:481) ~[na:na] at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:442) ~[na:na]

为什么存储库中缺少此接口?我该如何解决这个问题? https://github.com/geotools/geotools/blob/main/modules/library/metadata/src/main/java/org/geotools/util/

我可以看到这个接口(具有相同的包)存在于我使用 jscience 的另一个依赖项中...... 在此处输入图像描述

版本: