arcgis for android(十)地理(电子)围栏实现

五大Web GIS地图框架深度对比:Leaflet、OpenLayers、Mapbox、Cesium与ArcGIS for JavaScript 本文深度对比了五大主流Web GIS地图框架:Leaflet、OpenLayers、Mapbox、Cesium和ArcGIS for JavaScript,分析它们在渲染能力、数据处理和生态体系等方面的核心差异。通过实际项目案例和技术指标,帮助开发者根据2D/3D可视化需求、数据量级和团队经验做出最优选择,提升Web GIS开发效率。 阅读详情

1、上一章讲了arcgis for android 入门与提高(九)地理查询 + 触摸事件,本节讲一个应用,给定一个地理范围,判断当前位置是否进入到划定的围栏(可以构建多个围栏,判断这个点是否在所有的多边形内)。最好基于arcgis for android 入门与提高(六)定位https://blog.youkuaiyun.com/HB_Programmer/article/details/119993487,用获取的当前位置判断是否进入地理围栏。

2、原理是一点是否在多边形内,所以只要判断当前的经纬度是否在构建的多边形内:

//判断坐标点是否落在指定的多边形区域内
public boolean IsInPolygon(double lon, double lat, List<String> list) {
    double x = lon;
    double y = lat;
    int isum, icount, index;
    double dLon1, dLon2, dLat1, dLat2, dLon;
    if (list.size() < 3) {
        return false;
    }
    isum = 0;
    icount = list.size();
    for (index = 0; index < icount - 1; index++) {
        //防止越界
        if (index == icount - 1) {
            dLon1 = Double.parseDouble(list.get(index).split(",")[0]);
            dLat1 = Double.parseDouble(list.get(index).split(",")[1]);
            dLon2 = Double.parseDouble(list.get(0).split(",")[0]);
            dLat2 = Double.parseDouble(list.get(0).split(",")[1]);
        } else {
            dLon1 = Double.parseDouble(list.get(index).split(",")[0]);
            dLat1 = Double.parseDouble(list.get(index).split(",")[1]);
            dLon2 = Double.parseDouble(list.get(index + 1).split(",")[0]);
            dLat2 = Double.parseDouble(list.get(index + 1).split(",")[1]);
        }

        // 判断指定点的 纬度是否在 相邻两个点(不为同一点)的纬度之间
        if (((y >= dLat1) && (y < dLat2)) || ((y >= dLat2) && (y < dLat1))) {
            if (Math.abs(dLat1 - dLat2) > 0) {
                dLon = dLon1 - ((dLon1 - dLon2) * (dLat1 - y)) / (dLat1 - dLat2);
                if (dLon < x) {
                    isum++;
                }
            }
        }
    }

    if ((isum % 2) != 0) {
        return true;
    } else {
        return false;
    }
}

当返回结果为true代表在多边形内,反之在外。

private List<List> mListList = new ArrayList<>();

mListList 存放的是多个多边形,比如mListList [0]代表第一个多边形,以此类推。

3、可以用shape导出为geojson格式的数据,mapshaper,记得把所有的shape数据都拖到这个网址,geojson数据格式如下,需要注意的是要构成一个闭环,即第一个点和最后一个点一样:

{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Polygon",
                "coordinates": [
                    [
                        [
                            114.68084061102523,
                            34.776011272681835
                        ],
                        [
                            114.68085373060241,
                            34.77571327085743
                        ],
                        [
                            114.68117234890524,
                            34.775700151280255
                        ],
                        [
                            114.6811667262293,
                            34.77601314690715
                        ],
                        [
                            114.68084061102523,
                            34.776011272681835
                        ]
                    ]
                ]
            },
            "properties": {
                "name": "测试"
            }
        }
    ]
}

然后解析:

//解析geojson
JSONObject jsonObject = new JSONObject(ret);
JSONArray jsonArray = jsonObject.getJSONArray("features");
for (int i = 0; i < jsonArray.length(); i++) {
    List<String> temp = new ArrayList<>();
    JSONObject object = jsonArray.getJSONObject(i);
    JSONObject geometry = object.getJSONObject("geometry");
    JSONArray coordinates = geometry.getJSONArray("coordinates").getJSONArray(0);
    for (int j = 0; j < coordinates.length(); j++) {
        JSONArray point = coordinates.getJSONArray(j);
        temp.add(point.toString().substring(1, point.toString().length() - 1));
    }
    mListList.add(temp);

4、结果处理:

int len = mListList.size();
for (int i = 0; i < len; i++) {
    mLon = "114";
    mLat = "34";
    if (IsInPolygon(Double.parseDouble(mLon), Double.parseDouble(mLat), mListList.get(i))) {
        textViewStatus.setText("状态: 在电子围栏内");
        break;
    } else {
        textViewStatus.setText("状态: 在电子围栏外");
    }
}

战地边缘AI:轻量级机器学习在断网断电人道救援中的实战落地 边缘AI是指将模型推理能力下沉至终端设备,绕过云端依赖,在带宽受限、电力不稳、算力薄弱的极端环境下实现自主决策。其核心原理是模型压缩、硬件适配与数据降维,技术价值在于提升系统可用性、鲁棒性与部署敏捷性。典型应用场景包括灾害响应、战区人道援助、野外科考等弱连接环境。本文聚焦真实乌克兰前线部署案例,详解如何用37MB轻量模型、纯CPU推理、手机级输入(倾斜航拍图/GPS坐标)完成建筑安全分级、动态避难路径规划与炮击热力图生成——关键突破在于LightCNN-3网络设计、相对地标锚定定位法及OSINT驱动的无历史 阅读详情

相关推荐

GIS系列(一)互联网地图WebGIS技术架构概述

这是我在csdn上发表的第一篇文章,两年的webgis开发让我对现在的互联网地图技术架构有了一个初步的了解,这篇文章为大家简单的分享一下现有的互联网地图的技术架构。 1.纯前端 纯前端地图架构依赖于众多的js框架,如果是开源的成型的框架,可以使用OpenLayers,Leaflet,Mapbox等。三维的可以使用Cesium,Three.js当然,如果你不想借助已有的框架,想自己写 的话,也可以好好学习一下canvas,WebGL等基础知识,自己编写接口和框架,配合一些服务,来实现纯前端的地图工程。

lz5211314121的博客 3773

ArcGIS for Android 100.3.0(15):GeometryEngine类的常用方法介绍

GeometryEngine 定义用于对几何执行各种操作的静态方法。例如坐标转化,计算距离,面积等。 API https://developers.arcgis.com/android/latest/api-reference/reference/com/esri/arcgisruntime/geometry/GeometryEngine.html#boundary(com.esr...

qq_36699930的博客 5798

从智能家居到智慧城市:AI Agent Harness Engineering 作为统一控制中枢

我们可以把每个独立的智能系统看作一根带有独立功能的电线:智能家居Agent是负责家庭设备控制的电线,社区Agent是负责社区管理的电线,城市交通Agent是负责交通调度的电线,而AHE就是把这些分散的电线整合起来的「智能线束」:它不仅负责把不同接口、不同协议、不同层级的Agent连接起来,还提供统一的编排、调度、协同、观测能力,实现全局效用最大化的智能决策。

AI Agent Harness Engineering 202

arcgis for android 空间查询

arcgis for android 参数设置: //查询点击地图上任意点判断是否在一个范围内(地图坐标用的大地坐标) Point point = mapView.toMapPoint(x, y); //投影坐标转换成经纬度 Point wgsPoint = (Point) GeometryEngine.project(point, mapView.getSpatialRefere

Hello World !! 2750

ZYNQ开发(2)在Linux系统层上PL-PS通过AXI-DMA传输数据详细步骤及注意事项

参考的网络资料 https://github.com/bperez77/xilinx_axidma/tree/master https://gitlab.gnome.org/HosseinBeheshti/UlteraZed7EV/-/tree/master/petalinux/xilinx_axidma https://www.icode9.com/content-3-925319.html https://blog.youkuaiyun.com/weixin_38218267/article/details/1

aizaiyueye的专栏 3448

5G NR上行控制信道PUCCH

一、PUCCH概述 PUCCH用于承载上行控制信息,相比LTE,NR PUCCH支持5种不同的格式,按照时域上所占用的符号数量可以分为短格式和长格式两种,如下表所示,短格式占用1-2个符号,可以承载1-2bit信息,长格式占用4-14个符号,可承载大于2bit的信息。NR引入短格式PUCCH的目的是可以缩短HARQ-ACK反馈的时延,长格式仍然是考虑到持续时间长可以保证覆盖。 NR中,考虑到系...

一个关于5G NR的博客^^ 3万+

arcgis sdk android,ArcGIS Runtime SDK for Android

【解决办法】:ArcGIS for Android 10.2.7的API提供了setOrderByFields方法实现对要素服务生成的.geodatabase进行排序,使用该方法的前提需要要素服务本身支持supportedadvancedquery。但是这种... 显示全部 »【解决办法】:ArcGIS for Android 10.2.7的API提供了setOrderB...

weixin_29958569的博客 393

VS2017中调用gdal(C#版)的方法二(含gdal下载地址,配置过程,代码测试,超详细!!)

VS2017中gdal(C#)版的配置与测试 上次记录了直接在VS2017中下载并应用gdal的方法,这次来记录一下网上下载的安装包配置与测试的方法。 一、环境、版本及下载地址 win10,vs2017社区版,gdal2.4.4 还是像之前在Unity中应用gdal一样,最好是下载已经编译好的C#版的gdal,不然自己配置真的很容易出错,我就是这样的,下面提供不同版本的gdal下载地址: 1.GDAL2.4.4(C#版、64位): https://download.youkuaiyun.com/download/che

chengbaola的博客 1365

arcgis runtime for android 100.14.0 入门系列,八、featureLayer要素符号化与标注表达式

这一章节我们来实现如何在要素上显示标注和各种酷炫图标,不然单单只是一个红色的点和一根有颜色的线不太美观和不够见名知意。图标资源读者可以在ArcgisAndroid源码主目录可以看到,在程序启动的时候在文件管理器ArcgisAndroid中会生成一个叫 图标资源 目录,你需要把这些图标资源复制进去就可以进行下一步操作了。首先回到图层配置中可以看到新增了两个可以下拉的选项,标注字段就是把选中的字段作为该图层的标注字段,例如我选中的是名称字段,我在录入要素的时候输入的是 红绿灯 它就会把这个红绿灯内容作为标签显示

weixin_40807433的博客 2318

Windows 11安装realtek audio control

Windows 11安装realtek audio control,解决无法链接RPC问题

m0_46144825的博客 8万+

OceanBase数据迁移(OMS)深度解析:异构数据库迁移方案、核心原理与实战优化指南

OceanBase迁移服务(OMS)提供异构数据库间全量+增量数据迁移与实时同步能力,核心价值在于保障业务连续性、数据一致性和异构兼容性。其分层架构包含服务接入层、流程编排层和组件链路层,支持Oracle/MySQL/DB2等与OceanBase的数据交互。关键技术包括DBCat引擎处理结构转换、并行分片实现全量迁移、以及日志解析保障增量同步。OMS通过类型映射、批量提交和断点续传等优化手段,确保迁移过程高效可靠,典型应用于去O迁移、数据库升级等场景。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 849

Android Arcgis入门(七)、利用GeometryEngine坐标转换、计算距离与面积等

GeometryEngine是Arcgis的重要工具类,利用此工具类,可以计算地图上的距离、面积,将点、线、面转化为Json数据,将Json转化为点线面,坐标转换作用非常强大。一、坐标转化将用到方法 GeometryEngine.project(Geometry geometry, SpatialReference inputSR, SpatialReference outputSR),第二个为Ge

Gary__123456的博客 4650

分析4-20mA检查电路分析

本文介绍了一种工业领域常用的4-20mA电流信号调理电路,可将标准电流信号转换为适合MCU采集的电压信号。电路包含三个关键模块:首先通过10Ω取样电阻将4-20mA电流转换为0.04-0.2V电压;然后采用同向比例运算放大器KTA333-ST5进行信号放大;最后通过二阶有源低通滤波器滤除工业环境中的高频干扰。文章详细分析了各模块的工作原理和参数设计,并以压力传感器和温度变送器为例说明了实际应用中的参数调整方法。该电路具有抗干扰能力强、精度高等特点,适用于工业压力、温度等模拟量信号的采集处理。

qq_37999850的博客 1327

ArcGIS for Android 缩放地图至坐标确定的矩形范围

【代码】ArcGIS for Android 缩放地图至坐标确定的矩形范围。

gjgfjgy的博客 746

自适应滤波器在噪声消除中的应用:系统设计与实现

本文设计并实现了一种基于LMS算法的自适应噪声消除系统,能够有效消除周期性背景噪声,提升信噪比10dB以上。系统采用模块化设计,包含音频输入、自适应滤波、信号分析和可视化等核心模块,支持实时处理与参数动态调整。通过Python实现,提供图形界面进行参数设置、频谱对比和音频播放功能,为语音增强提供了一种实用解决方案。

huanghm88的专栏 128

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

面向GIS的Android studio移动开发(二)--在地图上绘制电子围栏

创建电子围栏

lll23333l的博客 727

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

GIS跟踪监管系统电子围栏

单击“修改”按钮,在地图上拖动电子围栏几何顶点或中心,修改电子围栏要素(参考程序代码7-6),修改完成后弹出相应的对话框,可以修改电子围栏名称,单击“确认”按钮后通过Ajax请求将数据提交到后台服务,后台服务在数据库中更新该电子围栏数据,地图加载更新完成电子围栏要素。单击“新增”按钮,在地图上绘制电子围栏(参考程序代码7-3),绘制完成后弹出相应的对话框,输入电子围栏名称,单击“确认”按钮后通过Ajax请求将数据提交到后台服务,后台服务在数据库中新增一条电子围栏记录,地图上加载新增成功的电子围栏要素。

leva的博客 1084

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android开发-百度地图之电子围栏

功能实现:根据经纬度创建一个坐标,判断该坐标是否在指定圆形覆盖范围内两个计算方法,直接套用:/*** 地球半径*/private static double EARTH_RADIUS = 6378138.0;private static double rad(double d){ return d * Math.PI / 180.0;} /*** 计算是否在圆上(单位/千米)...

weixin_30314813的博客 1590

android gps 电子围栏,GPS定位系统平台电子围栏的功能和应用

原标题:GPS定位系统平台电子围栏的功能和应用GPSBD通用系统是一套集成实时定位,历史轨迹,电子围栏,报警通知,统计报表,指令下发于一体的多功能型监控系统;GPSBD通用系统是一套专为二次开发而设计的;系统里面的围栏分为以下几种:圆形围栏、线性围栏、多边形围栏及行政区域围栏; 这里所说的电子围栏是指通过平台来设置规划一个区域起到类似围栏的效果,通过围栏跟相关设备进行绑定,这样就能知道这个设备...

weixin_32115711的博客 1492

安卓 电子围栏_手机电子围栏是什么

电子围栏特点:号码扫描功能,扫描并捕获覆盖区内移动终端IMSI、IMEI等信息,4G扫描只获取移动终端IMSI信息;采集信息实时传送功能,能将采集的数据通过无线网络或者有线传送至后台服务器;捕获成功率:移动终端在覆盖范围内静止或步行时,捕获成功率≥95%;移动终端在覆盖范围内以时速<120公里/小时运动时,捕获成功率≥90%(室外型);覆盖范围:室外型空旷环境,现网场强-95dBm左右,单载波天线...

weixin_42299089的博客 1843

设置电子围栏 高德地图_Android 高德地图的使用, 根据手势拖动绘制电子围栏

最近项目用到高德地图,因此来写一篇文章理一下高德的使用步骤方法,希望对大家有用!先上效果图:效果图.gif1.注册+配置废话不多说,要使用高德地图首先要去高德开放平台注册成为开发者(lbs.amap.com/), 注册成为高德开发者需要分三步:第一步,注册高德开发者;第二步,去控制台创建应用;第三步,获取Key(可以去官网查看)。2.绘制面高德地图中多边形是由Polygon类定义的一组在地图上...

weixin_39984442的博客 1353

基于百度地图API的GIS实践--电子围栏

需求是这样的:需要限制某app的使用范围,如果不在范围内,则不允许使用; 解决思路:提前设置app使用范围,根据用户当前GPS位置,判定是否在范围内。 技术调研:因为之前一直用的百度地图api,文档也比较全面,就用它了。打开百度地图JSSDK,发现设置自定义覆盖物接口,IP定位接口,地址计算服务可以满足需求。客户要求精度不是特别高,r如果要求精度比较高的情况下,就得联系百度提供商业服务了。这里插个...

夏至海的博客 2433

Android GPS定位与地理围栏完整指南:从基础到高级实现

在Android应用开发中,**GPS定位**和**地理围栏**功能是构建位置感知应用的核心技术。无论是开发出行导航、位置签到、地理围栏提醒还是基于位置的社交应用,掌握这些技术都至关重要。本文将基于《The Busy Coder's Guide to Android Development》项目中的实际示例,为您提供完整的实现指南。 ## 📱 Android定位技术演进 Android提供了

gitblog_00324的博客 1102

Android 百度地图简单的地理围栏

需要在百度地图上划定一片矩形区域为限行区域,当车辆即将越过上边界以及左边界时需要在百度地图上进行语音以及图片弹窗的提示。学习了百度地图SDK地理围栏的源码,官方支持多种围栏的创建,但是貌似新版的SDK不支持fence类了,所以只好参考源码进行DIY。

qq_35308053的博客 1297

android app使用gps+运动传感器实现电子围栏代码

不好意思,我还没有写。

431
上一篇: arcgis for android(八)加载shape和影像
下一篇: Android拍照保存
之乎者也哦
博客等级 码龄8年 7165粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值