JAVA 中的 ESRI 几何压缩算法
ESRI geometry compression algorithm in JAVA
我正在 JAVA 中编写 ESRI 几何压缩算法,我正在使用这个 link。
使用提供的 link 中提到的说明,这是我当前的代码:
public static void main(String[] args) {
String dirPoints = "-118.356654545455,34.1146;-118.356436363636,34.1143272727273;-118.356418181818,34.1142363636364;-118.356490909091,34.1137636363636";
String compressedGeometry = "";
double xPointPrev = 0.0;
double yPointPrev = 0.0;
int coefficient = 55000;
String coefficient_32 = Integer.toString(coefficient, 32);
compressedGeometry = coefficient_32 + compressedGeometry;
String[] path_XY = dirPoints.split(";");
for (int i = 0, leni = path_XY.length; i < leni; i++) {
String[] xy = path_XY[i].split(",");
double pointX = Double.parseDouble(xy[0].trim());
double pointY = Double.parseDouble(xy[1].trim());
int xDifference = (int) Math.round(coefficient * (pointX - xPointPrev));
int yDifference = (int) Math.round(coefficient * (pointY - yPointPrev));
String xDifference_32 = Integer.toString(xDifference, 32);
compressedGeometry += xDifference_32;
String yDifference_32 = Integer.toString(yDifference, 32);
compressedGeometry += yDifference_32;
xPointPrev = pointX;
yPointPrev = pointY;
}
System.out.println(compressedGeometry);
}
预期输出:“+1lmo-66l1f+1p8af+c-f+1-5-4-q”
但我得到这个:“1lmo-66l1g1p8afc-f1-5-4-q”
我错过了什么?非常感谢任何帮助。
谢谢,
根据Integer.toString()
"If the first argument is not negative, no sign character appears in the result."
因此我认为您需要添加“+”。
(我认为 f-g 是他们的错字)。
我正在 JAVA 中编写 ESRI 几何压缩算法,我正在使用这个 link。
使用提供的 link 中提到的说明,这是我当前的代码:
public static void main(String[] args) {
String dirPoints = "-118.356654545455,34.1146;-118.356436363636,34.1143272727273;-118.356418181818,34.1142363636364;-118.356490909091,34.1137636363636";
String compressedGeometry = "";
double xPointPrev = 0.0;
double yPointPrev = 0.0;
int coefficient = 55000;
String coefficient_32 = Integer.toString(coefficient, 32);
compressedGeometry = coefficient_32 + compressedGeometry;
String[] path_XY = dirPoints.split(";");
for (int i = 0, leni = path_XY.length; i < leni; i++) {
String[] xy = path_XY[i].split(",");
double pointX = Double.parseDouble(xy[0].trim());
double pointY = Double.parseDouble(xy[1].trim());
int xDifference = (int) Math.round(coefficient * (pointX - xPointPrev));
int yDifference = (int) Math.round(coefficient * (pointY - yPointPrev));
String xDifference_32 = Integer.toString(xDifference, 32);
compressedGeometry += xDifference_32;
String yDifference_32 = Integer.toString(yDifference, 32);
compressedGeometry += yDifference_32;
xPointPrev = pointX;
yPointPrev = pointY;
}
System.out.println(compressedGeometry);
}
预期输出:“+1lmo-66l1f+1p8af+c-f+1-5-4-q”
但我得到这个:“1lmo-66l1g1p8afc-f1-5-4-q”
我错过了什么?非常感谢任何帮助。 谢谢,
根据Integer.toString()
"If the first argument is not negative, no sign character appears in the result."
因此我认为您需要添加“+”。
(我认为 f-g 是他们的错字)。