セシウムで空間クエリを実現(アイデア分析とソースコード)
GISデータ分析の基本的な手段として、3D GISでは空間クエリも不可欠です。具体的な実装を以下に紹介します。
目次
序文
GISメジャーでない場合は、空間クエリに慣れていない可能性があります。以下では、空間クエリとは何かについて簡単に説明します。範囲内には多くのポイントがあります。エリアの一部を自由に円で囲んで、円を見つけることができます。出てくる領域のポイントは何ですか、これは空間クエリです。
1.照会するポイントを取得する
最初のステップは、クエリする必要があるポイントデータを準備することです。以下の方法:
var res = response.data;
var Towerspoints = [];
for (var i = 0; i < res.length; i++) {
var feature = new Object();
feature.type = "Feature";
feature.properties = { Name: res[i].evid };
feature.geometry = {
type: "Point",
coordinates: [res[i].jingdu, res[i].weidu],
};
Towerspoints.push(feature);
}
TowersCollection = {
type: "FeatureCollection",
features: Towerspoints,
};
2つ目は、顔を照会する
2番目のステップは、クエリする必要のある範囲(つまり、エリアオブジェクト)のデータを準備することです。以下の方法:
var ellipsoid = viewer.scene.globe.ellipsoid;
for (var i = 0; i < arrPoint.length; i++) {
var cartograhpinc = ellipsoid.cartesianToCartographic(arrPoint[i]);
var lng = Cesium.Math.toDegrees(cartograhpinc.longitude); //经度
var lat = Cesium.Math.toDegrees(cartograhpinc.latitude); //维度
searchRegion.push([lng, lat]);
}
var startPoint = ellipsoid.cartesianToCartographic(arrPoint[0]);
var lng_S = Cesium.Math.toDegrees(startPoint.longitude);
var lat_S = Cesium.Math.toDegrees(startPoint.latitude);
searchRegion.push([lng_S, lat_S]);
searchWithin.push(searchRegion);
var searchWithinEntity = Cesium.turf.polygon(searchWithin);
第二に、面と点の交差
このステップは最後のステップです。前の2つのステップで準備したポイントオブジェクトとエリアオブジェクトを使用して、スペースを計算できます。ここでは、芝生ライブラリを使用します。メソッドは次のとおりです。
var ptsWithin = Cesium.turf.pointsWithinPolygon(
TowersCollection,
searchWithinEntity
);
総括する
1.主にセシウムオブジェクトと芝オブジェクトが相互に通信する
2. 2つ目は、交差計算にturfインターフェースを使用することです
効果は次のとおりです。
4つ以上
ここで説明する点がありますが、限られたスペースと時間のために、すべてのコードが書かれているわけではありません。主な実装のアイデアがここにリストされています。
それでも分からない場合は
それでもセシウムと通信する必要がある場合は、
一緒に勉強して話し合いましょう。
私たちの拠点に参加できます。拠点の住所は450342630(QQグループ番号)です。