Daha çox

Sezyum JS Xətt Uzunluğu


Seziyum JS polilin uzunluğunu gerçək dünya vahidlərində qaytarmaq üçün bir metod varmı?

Məsələn, bir polyline yaratsam:

var orangeOutlined = viewer.entities.add ({ad: 'Hündürlükdə və səthi izləyən qara konturlu narıncı xətt', polyline: {pozisyonlar: Sezyum.Cartesian3.fromDegreesArray ([- 104.606667,50.454722, 15.71666666, 69.1]), width : 5, material: yeni Cesium.PolylineOutlineMaterialProperty ({color: Cesium.Color.ORANGE, outlineWidth: 2, outlineColor: Cesium.Color.BLACK})}});

… Bu sətrin uzunluğunu qaytarmaq üçün bir üsul varmı:

console.log (narıncıOutlined.length)

Beləliklə, bir Cartesian3.distance funksiyası var, lakin burada cavab sadəcə bunu bütün cüt cütlərə çağırmaq qədər sadə deyilvəzifələr.

Məsələ, nümunənizdəki xəttin əhəmiyyətli bir Yer əyriliyinə sahib olduğunu və sadəcə çağırış etdiyini göstərirməsafəgetdiyi yerə çatmaq üçün Yer qabığını kəsərək düz bir həndəsi məsafə alacaq. Aydındır ki, Sezyum kürəsində göstərilən xətt bunu etmir, ona görə də bu xətt boyunca bütün ara nöqtələri əldə etmək üçün Seziumun bağırsaqlarına bir az çatmalıyıq. Bu ara nöqtələr Yer səthinin əyriliyinə riayət edərək polilinanın ümumi uzunluğuna əlavə olunur.

Ancaq əvvəlcə mövqeləriniz üçün dəyişən çıxarın:

var pozisiyaları = Sezyum.Cartesian3.fromDegreesArray ([-104.606667,50.454722, 15.71666666, 69.1]);

(və ya növbə ilə,var pozisyonları = orangeOutlined.polyline.positions.getValue ();bu da eyni şeydir)

Sonra zəng edin PolylinePipeline.generateArc bu mövqelərdən ara nöqtələr yaratmaq. Bu bütün sinif qeyd olunur unutmayın@ şəxsiyəni API xəbərdarlıq edilmədən versiyalar arasında dəyişə bilər, lakin bu köməkçi funksiyasına çatmağın başqa yolu yoxdur.

var surfacePositions = Sezyum.PolylinePipeline.generateArc ({vəzifələr: mövqelər});

Buradakı dönüş dəyəri düz bir xam kartezyen dəyəridir, deyilKartezyen 3.obyektlər. Bitişik cütlər arasındakı məsafələri belə yekunlaşdırırıq:

var scratchCartesian3 = yeni Sezyum.Cartesian3 (); var surfacePositionsLength = surfacePositions.length; var totalDistanceInMeters = 0; üçün (var i = 3; i 

Nəhayət, məsafəni göstərə bilərik.

var totalDistanceInKm = totalDistanceInMeters * 0.001; console.log ('Məsafə:' + totalDistanceInKm + 'km');

Bu nümunə xətti üçün 5881.7 km məsafədə məlumat alıram. Google Maps ölçmə vasitəsi oxşar bir ölçmə üçün 5,862 km məsafəni bildirir, buna görə burada izah edilən metodun işlədiyini yaxşı bir ağıl yoxlaması kimi görünür.


İstifadə edə bilərsən Sezyum.EllipsoidGeodezik # səthMəsafəsi məsafəni metrlərlə hesablamaq və sonra kilometrə çevirmək.

var startCartesian3Point = Sezyum.Cartesian3.fromDegrees (48.862165, 2.305189); var endCartesian3Point = Sezyum.Cartesian3.fromDegrees (45.755675, 4.822185); var startCartographicPoint = Sezyum.Cartographic.fromCartesian (startCartesian3Point); var endCartographicPoint = Sezyum.Cartographic.fromCartesian (endCartesian3Point); var ellipsoidGeodesic = yeni Cesium.EllipsoidGeodezik (startCartographicPoint, endCartographicPoint); var distance = ellipsoidGeodesic.surfaceDistance; var distanceInKm = məsafə * 0.001; console.log ('Geodeziya məsafəsi:' + distanceInKm + 'Km');


Videoya baxın: الفنان نضال ابو المنتصر شبابه فاروق النصراوي سهرة صدام الحوت مركز الاقصى والنورسي 0785100384 (Oktyabr 2021).