You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Java代码实现AnyLogic GIS指定位置周边学校搜索及集合生成

AnyLogic GIS自动化地点搜索与POI采集实现方案

1. 提前配置模型基础元素

  • 在Main代理中新增字符串类型参数userInputLocation,勾选仿真窗口可编辑权限,用于接收用户输入的目标地点名称
  • 新建两个智能体类型:CustomPoint(存储用户输入的目标位置)、School(存储搜索到的学校信息),两类智能体均新增GISPoint类型变量location存储GIS坐标
  • 在Main中新增元素类型为School的集合schoolsAround,用于存储搜索到的学校智能体
  • 确认GIS地图组件(默认命名为map)已开启POI搜索权限,使用支持地点搜索的GIS服务(如内置OpenStreetMap服务)

2. 地址转坐标并生成目标位置智能体

以下代码可放入Main的启动动作,或userInputLocation参数的「更改时动作」中触发:

// 调用GIS地图搜索接口,根据用户输入文本获取匹配坐标
List<GISSearchResult> searchResults = map.search(userInputLocation);
if(!searchResults.isEmpty()){
    // 取优先级最高的第一条搜索结果坐标
    GISPoint targetPoint = searchResults.get(0).getPoint();
    // 生成目标位置智能体
    CustomPoint target = add_customPoints();
    target.location = targetPoint;
    // 在GIS地图上渲染智能体
    target.setGISPosition(targetPoint);
}

注:customPoints为CustomPoint智能体对应种群的命名,可根据实际修改

3. 周边学校搜索与结果存储

在上述坐标获取成功的逻辑分支后,追加以下代码实现周边学校搜索:

// 定义搜索半径,单位为米,示例为3公里搜索范围
double searchRadius = 3000.0;
// 搜索指定范围内的学校类POI
List<GISPOI> poiResults = map.searchPOI(targetPoint, searchRadius, GISPOICategory.AMENITY_SCHOOL);
// 清空历史搜索结果
schoolsAround.clear();
// 遍历POI结果生成学校智能体并存储
for(GISPOI poi : poiResults){
    School school = add_schools();
    school.location = poi.getPoint();
    school.setGISPosition(poi.getPoint());
    // 可选:赋值学校名称、地址等扩展属性
    school.name = poi.getName();
    school.address = poi.getAddress();
    // 存入结果集合
    schoolsAround.add(school);
}

注意:低版本AnyLogic的GISPOICategory枚举命名可能存在差异,可在代码编辑器中使用代码补全功能查看对应版本的枚举值;搜索无结果时优先检查GIS服务网络连接状态、搜索半径配置是否合理。

4. 触发逻辑配置

  • 需用户输入后实时触发:将上述两段代码放入userInputLocation参数的「更改时动作」中
  • 需模型启动自动执行:将代码放入Main的「启动」动作中

内容的提问来源于stack exchange,提问作者Ann Francis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 02:39:00