geometryEngine.contains方法。先创建点的几何对象,再调用该方法并传入目标区域几何对象,根据返回布尔值判断点是否在区域内。ArcGIS JS 判断点

在 ArcGIS JS 中,判断点的位置关系、属性等操作是常见的地理空间分析任务,以下是详细介绍:
一、判断点是否在多边形内
使用 `contains` 方法
ArcGIS JS 提供了几何对象的contains 方法来判断一个点是否在多边形内部。
// 假设有一个多边形 polygon 和一个点 point
require([
"esri/geometry/Polygon",
"esri/geometry/Point"
], function(Polygon, Point) {
// 创建多边形
var polygon = new Polygon({
rings: [
[ [-97.06138,32.837], [-97.06133,32.836], [-97.06526,32.834], [-97.06866,32.834], [-97.07051,32.837] ]
]
});
// 创建点
var point = new Point({
x: -97.065,
y: 32.835
});
// 判断点是否在多边形内
var isInside = polygon.contains(point);
console.log("点是否在多边形内:", isInside);
});
使用空间关系查询
通过QueryTask 和空间关系查询来判断点是否在多边形内。
require([
"esri/tasks/QueryTask",
"esri/tasks/support/StatisticDefinition",
"esri/geometry/Point",
"esri/geometry/Polygon",
"dojo/domReady!"
], function(QueryTask, StatisticDefinition, Point, Polygon) {
// 创建多边形
var polygon = new Polygon({
rings: [
[ [-97.06138,32.837], [-97.06133,32.836], [-97.06526,32.834], [-97.06866,32.834], [-97.06051,32.837] ]
]
});
// 创建点
var point = new Point({
x: -97.065,
y: 32.835
});
// 创建查询任务
var queryTask = new QueryTask("https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/0");
// 创建查询对象
var query = new Query();
query.geometry = point;
query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
// 执行查询
queryTask.execute(query, function(result){
var count = result.features.length;
if (count > 0) {
console.log("点在多边形内");
} else {
console.log("点不在多边形内");
}
});
});
二、判断点是否在线段上
1. 使用distanceTo 方法
通过计算点到线段的距离来判断点是否在线段上,如果距离小于某个阈值,则认为点在线段上。
require([
"esri/geometry/Polyline",
"esri/geometry/Point"
], function(Polyline, Point) {
// 创建线段
var polyline = new Polyline({
paths: [
[-97.061, 32.835], [-97.06, 32.83]
]
});
// 创建点
var point = new Point({
x: -97.0605,
y: 32.8325
});
// 计算点到线段的距离
var distance = polyline.distanceTo(point);
console.log("点到线段的距离:", distance);
// 判断点是否在线段上
var threshold = 0.001; // 根据需求设置阈值
if (distance < threshold) {
console.log("点在线段上");
} else {
console.log("点不在线段上");
}
});
使用空间关系查询
通过QueryTask 和空间关系查询来判断点是否在线段上。
require([
"esri/tasks/QueryTask",
"esri/tasks/support/StatisticDefinition",
"esri/geometry/Point",
"esri/geometry/Polyline",
"dojo/domReady!"
], function(QueryTask, StatisticDefinition, Point, Polyline) {
// 创建线段
var polyline = new Polyline({
paths: [
[-97.061, 32.835], [-97.06, 32.83]
]
});
// 创建点
var point = new Point({
x: -97.0605,
y: 32.8325
});
// 创建查询任务
var queryTask = new QueryTask("https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/0");
// 创建查询对象
var query = new Query();
query.geometry = point;
query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
// 执行查询
queryTask.execute(query, function(result){
var count = result.features.length;
if (count > 0) {
console.log("点在线段上");
} else {
console.log("点不在线段上");
}
});
});
三、判断点的属性
使用 `identify` 方法
通过identify 方法可以获取点的属性信息。
require([
"esri/tasks/IdentityTask",
"esri/geometry/Point",
"dojo/domReady!"
], function(IdentityTask, Point) {
// 创建点
var point = new Point({
x: -97.065,
y: 32.835
});
// 创建识别任务
var identityTask = new IdentityTask("https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer");
// 执行识别任务
identityTask.executeIdentity([point], function(results){
for (var i = 0; i < results.length; i++) {
var feature = results[i].feature;
console.log("点的属性:", feature.attributes);
}
});
});
2. 使用QueryTask 查询属性
通过QueryTask 查询点的属性信息。
require([
"esri/tasks/QueryTask",
"esri/tasks/support/StatisticDefinition",
"esri/geometry/Point",
"dojo/domReady!"
], function(QueryTask, StatisticDefinition, Point) {
// 创建点
var point = new Point({
x: -97.065,
y: 32.835
});
// 创建查询任务
var queryTask = new QueryTask("https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/0");
// 创建查询对象
var query = new Query();
query.geometry = point;
query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
// 执行查询
queryTask.execute(query, function(result){
for (var i = 0; i < result.features.length; i++) {
var feature = result.features[i];
console.log("点的属性:", feature.attributes);
}
});
});
四、相关问题与解答
问题1:如何在 ArcGIS JS 中判断点是否在某个区域内?
解答:可以使用contains 方法或QueryTask 结合空间关系查询来判断点是否在某个区域内,具体实现可以参考上述“判断点是否在多边形内”的示例代码。
问题2:如何在 ArcGIS JS 中获取点的属性信息?
解答:可以使用identify 方法或QueryTask 来获取点的属性信息,具体实现可以参考上述“判断点的属性”的示例代码。
小伙伴们,上文介绍了“arcgisjs判断点”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!