2016-05-09 34 views
2

私の目標は、2つのセシウムの間の距離をキロメートルで計算することです。ボーナスとして、私は最終的にピクセル単位で距離を測定できるようにしたいと考えています。CesiumJS - 2つの点の距離

viewer.dataSources.add(Cesium.KmlDataSource.load('./data.kml', options)).then(function(dataSource) { 
    var entities = dataSource.entities._entities._array; 

私は、エンティティの新しいCartesian3オブジェクトを作成しようとしてきたI:

<Placemark> 
    <name>Place</name> 
    <Point><coordinates>48.655,-31.175</coordinates></Point> 
    <styleUrl>#style</styleUrl> 
    <ExtendedData> 
    ... 
    </ExtendedData> 
</Placemark> 

私はそうのようにセシウムにインポートしています:

私はこのようなKML形式の目印の束を持っています気にしますが、エンティティオブジェクトから取得するx、y、zの値は何十万もあります。私のKMLの緯度と経度は、エンティティオブジェクト内にはありません。

私はCartesian3オブジェクトを作成し、そのように距離を計算した場合は:

var distance = Cesium.Cartesian3.distance(firstPoint, secondPoint); 

それは何百万人の中の数字を返します。私はこのように複数のポイント間の距離を評価し、実際の値をキロメートル単位で返すオンライン計算機の結果に戻したそれらの値を比較すると、距離の差は線形ではありません(セシウムによって返される距離のいくつかは900実際の距離の倍、実際の距離の700倍です)。

私はそれが助けを受けるのに十分であることを望みます。私はこれをどこから始めるべきかわからない。どんな助けもありがとう。ありがとうございました。

答えて

5

ここではいくつかのことが行われています。 Cesium.Cartesian3クラスにはメートルが含まれているので、1000で割ってkmを得るのは正しいですが、それは完全な話ではありません。デカルト3次元は3D地球上の位置であり、その地球の反対側にある2つの間の単純なCartesian.distanceを計算すると、地球の真ん中を通り抜ける線の長さのようにデカルトの線形距離が得られます遠くに行くために地球の表面の周りを回るのではなく、1つから他のものに得ること。

あなたが実際に望む距離 - 地球の表面の曲率に沿った線の距離 - を得るには、GIS SEのCesium JS Line Lengthへの答えをチェックしてください。

関連する問題