Více

JTS Vividsolutions API: výpočet První (přímý) geodetický problém

JTS Vividsolutions API: výpočet První (přímý) geodetický problém


Používám populární JTS Vividsolutions API pro Javu. Snažím se zjistit, zda mohu provést výpočet prvního (přímého) geodetického problému s API. Existuje způsob, jak to vypočítat pomocí tohoto API? Zdá se, že jedna jednoduchá metoda neexistuje, ale možná používá nějaké kombinace stávajících metod toho API.

Poznámka - nehledám řešení implementace prvního (přímého) algoritmu geodetických problémů pomocí sady Java+JTS.


Mnohem raději bych navrhoval dělat to ručně, protože matematika je jednoduchá. To bude mnohem rychlejší než používání tolika potenciálně složitých metod.

public static Point createPointInDistanceAtAngle (Bodová kotva, dvojitá vzdálenost, dvojitý úhel) {double dx = vzdálenost * Math.cos (Math.toRadians (úhel)); double dy = vzdálenost * Math.sin (Math.toRadians (úhel)); double x = anchor.getX () + dx; double y = anchor.getY () + dy; GeometryFactory geometryFactory = new GeometryFactory (); // možná projít jeden Bodový bod = geometryFactory.createPoint (nová souřadnice (x, y)); návratový bod; }

Dobře, tak jsem našel řešení sám díky komentáři @user30184.

Klíčovým principem je použití rotace JTS prostřednictvím matematické transformace.

// můj základní bod Souřadnice ancorPoint = placeCoordinate; // vytvoření ortogonálního bodu ve vzdálenosti 0,001 úhlového stupně Souřadnice končící Souřadnice = nová Souřadnice (placeCoordinate.x+0,001, placeCoordinate.y); // otočit o 90 stupňů = pi/2 = 1,57 (radiány) AffineTransform affineTransform = AffineTransform.getRotateInstance (1,57, ancorPoint.x, ancorPoint.y); MathTransform mathTransform = nový AffineTransform2D (affineTransform); zkuste {// uložit výsledek „na místo“ - upravte koncovku souřadnic tak, aby šetřila paměť JTS.transform (koncovkaKoordinace, koncovkaKoordinace, mathTransform); } catch (Exception e) {}