ArcGIS实现绘制点、线、面等图形

ArcGIS点线面要素的绘制和修改 编辑器工具条负责矢量图层要素的编辑,可在自定义中勾选添加编辑器工具条。菜单栏→Customize(自定义)→Toolbars(工具栏)→Editor(编辑器) 阅读详情

一、实现的思路

首先声明一个GraphicLayer的图层,(该图层是客户端类型图层,与ArcGIS Server发布的图层没有任何联系,绘画的对象也在客户端完成)然后生命工具类 Draw,根据点选的不同进行绘画,然后将绘画的图形进行渲染

二、HTML布局

<div id="info">
    <sapn>点击你所要绘画的图形</span>
    <button id="Point">Point</button>
    <button id="Multipoint">Multipoint</button>
    <button id="Line">Line</button>
    <button id="Polyline">Polyline</button>
    <button id="FreehandPolyline">Freehand Polyline</button>
    <button id="Triangle">Triangle</button>
    <button id="Extent">Rectangle</button>
    <button id="Circle">Circle</button>
    <button id="Ellipse">Ellipse</button>
    <button id="Polygon">Polygon</button>
    <button id="FreehandPolygon">Freehand Polygon</button>
</div>

<div id="mapDiv"></div>

主要的代码

1、引用的类库

  var map, tb;
  require([
    "esri/map",
    "esri/toolbars/draw",
    "esri/symbols/SimpleMarkerSymbol",
    "esri/symbols/SimpleLineSymbol",
    "esri/symbols/PictureFillSymbol",
    "esri/symbols/CartographicLineSymbol",
    "esri/graphic",
    "esri/Color",
    "dojo/dom",
    "dojo/on",
    "dojo/domReady!"
  ], function(
    Map, Draw,
    SimpleMarkerSymbol, SimpleLineSymbol,
    PictureFillSymbol, CartographicLineSymbol,
    Graphic,
    Color, dom, on
  ) {
    map = new Map("mapDiv", {
      basemap: "streets",
      center: [-25.312, 34.307],
      zoom: 3
    });

2、初始化绘图工具

map.on("load", initToolbar);

3、绘图工具函数的封装

function initToolbar() {
          tb = new Draw(map);
          tb.on("draw-end", addGraphic);
          on(dom.byId("info"), "click", function(evt) {
            if ( evt.target.id === "info" ) {
              return;
            }
            var tool = evt.target.id.toLowerCase();//转换为小写
            map.disableMapNavigation();
            //激活绘图工具
            tb.activate(tool);
          });
        }

4、填充的声明

//设置点的填充样式
var markerSymbol = new SimpleMarkerSymbol();
markerSymbol.setColor(new Color("#00FFFF"));
//设置线的填充样式
        var lineSymbol = new CartographicLineSymbol(
          CartographicLineSymbol.STYLE_SOLID,
          new Color([255,0,0]), 10,
          CartographicLineSymbol.CAP_ROUND,
          CartographicLineSymbol.JOIN_MITER, 5
        );
//设置面的填充样式
        var fillSymbol = new PictureFillSymbol(
          "/Imaage/timg.jpg",
          new SimpleLineSymbol(
            SimpleLineSymbol.STYLE_SOLID,
            new Color('#000'),
            1
          ),
          42,
          42
        );

推荐一个画图js开源插件http://raphaeljs.com/icons/#talkq

5、添加到GraphicLayer的函数封装

function addGraphic(evt) {
          //关闭绘图工具
          tb.deactivate();
           //禁用导航
          map.enableMapNavigation();
          var symbol;
          if ( evt.geometry.type === "point" || evt.geometry.type === "multipoint") {
            symbol = markerSymbol;
          } else if ( evt.geometry.type === "line" || evt.geometry.type === "polyline") {
            symbol = lineSymbol;
          }
          else {
            symbol = fillSymbol;
          }
          map.graphics.add(new Graphic(evt.geometry, symbol));
        }

原链接:https://www.cnblogs.com/tuboshu/p/10752366.html

画圆画多边形 ArcGIS API for JavaScript

require([
         "esri/geometry/Circle",
	 "esri/geometry/Polygon",
	 "esri/Map",
	 "esri/layers/GraphicsLayer",
	 "esri/Graphic"
 
	],function(Circle,Polygon,GraphicsLayer,Map){
	
	var map = new Map("map",{
		center:[-81.3765, 28.54175)],
		slider:false,
		maxZoom: 6,
		fadeOnZoom: true
	});
	var graLayer = new GraphicsLayer();
	
	//画圆  Circle类
	//定义要画的图形的线条颜色
	var symbol = new SimpleFillSymbol().setColor(null).outline.setColor("red");
	
	// lon 经度 lat纬度(圆的中心点) radius 半径
	function setCircle(lon,lat,radius){
		var pt = new Point(lon,lat,map.spatialReference);
		var radius = radius;
		var circle = new Circle({
			crenter: pt,
			geodesic: true,
			radius: radius
		});
		
		var graphic = new Graphic(circle,symbol);
		graLayer.add(graphic);
	}
	
	//画多边形  Polygon
	function setPolygon(){
		var polygon = new Polygon(new SpatialReference({wkid:4326}));
		//添加多边形的各个角的顶点坐标,注意:首尾要链接,也就是说,第一个点和最后一个点要一致
		polygon.addRing([[-180,-90],[-180,90],[180,90],[180,-90],[-180,-90]]);
		var graphic = new Graphic(circle,symbol);
		graLayer.add(graphic);
	}
	//创建地图服务图层
	var tiledMapServiceLayer = new ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer");
	map.addLayer(tiledMapServiceLayer);
	map.addLayer(graLayer);
	//打开地图
	map.centerAndZoom(new Point(-81.3765, 28.54175)),6);
});
arcgis使用工具箱获取道路交叉点【新手】 得到融合后的道路后,再在相交处打断点。要使用要素转线,其功能如下图所示,我们要获取两条线的交点。将得到的点和线进行空间连接。给定一张路网信息,将所有交叉点找到,每次选定两点之间的道路。打开左侧内容列表,右键添加数据,将要分析的路网shp图导入。在窗口中,打开目录。打开项目文件,如果是新的项目,还需要导入数据集。获取焦交点,在目录中找到上一步得到的图层,右键。使用要素工具,打开ArcToolbox,找。,一直点下一步,得到打点的数据网格。得到最终的点和线在同一图层的结果。输入上一步得到的图层,确定即可。 阅读详情

相关推荐

ArcGIS专题制图(二):ArcGIS制图中如何同时制作显示多个专题图

实验数据: 实验目的:

PpjBiubiubiu的博客 2万+

arcgis不闭合线转面_城市路网线段密度可视化-初级版(ARCGIS)

分享一个很简单的城市路网密度可视化的方法:以魔都为例最终效果数据要求路网link,字段最好包含道路等级和路段车道数,做加权分析。0、准备数据:魔都路网属性表:包含道路等级和车道数1、线密度分析以车道数为加权项生成初始密度成果:格式为栅格2、转为整型栅格可转换为面,但须将栅格数值转为整型生成整型栅格数据3、栅格转面栅格单元转为矢量面单元Gricode字段即为密度值进入符号系统处理展示形式4、相交矢量...

weixin_39769091的博客 937

arcgis runtime for android 100.13.0 入门系列,二、使用SketchEditor工具类绘制图形geometry,初步使用符号化和标注表达式

上一篇我们已经初步的搭建起arcgis-android:100.13.0了,这一篇我们来研究如何在arcgis中绘制点,线,面图形来获得geometry对象,以方便我们后续篇章来将geometry对象存储另存为kml,shp,geojson,也或者是存储在arcgis server服务端。 在开始前我稍微改造了一下上一篇章的程序,我将默认各位会编写任意安卓布局,这一点我将忽略讲述 言归正传、要绘制点,线,面,要素图形我们需要用到arcgis提供的SketchEditor工具类,用它即可快速完成绘制。

weixin_40807433的博客 5564

ArcGIS中多段线(MultiPart Polyline)的坐标提取及重绘

前段时间在项目中需要将Shp文件中的多线段(Polyline)的坐标提取出来,存成坐标序列文件如XML,方便前端应用中展示。 于是直接将Polyline强转为IPointCollection接口,进而获取点坐标序列,写成XML文件。思路清晰,实现也很简单。 经过一段时间应用,发现一个问题,获取出的坐标序列重绘时会出现乱的连线。 原来ArcGIS中多段线(Polyline)有一部分是结

小小的天空 1万+

arcgis for Android 100.2 绘制点线面(文末有三维地图)

这是这阶段arcgis for Android 的最后一篇了,前面有三篇。对于我经常使用坐标,进行绘制点线面图形的程序员,这个必须要的。因为在项目中经常用到。arcgis for Android 100.1 基本操作(缩小放大旋转定位)arcgis for Android 100.1 在线加载天地图和谷歌地图arcgis for Android 100.2 加载shp1、效果显示2、代码实现pac...

mmsx990的博客 4558

lgv20刷twrp_LG港版v20 root

这是LG港版v20 root,整理了一下有关LG港版v20的官方固件包了,有没有需要的呢,这里把固件包整理一下也是方便大家以后好下载了,因此有一些机友还是不知道在哪里下载官方的rom包,在这里说的固件rom包也就是原版的系统包了,大家可以放心的使用,这些系统包也都是支持线刷的,大家下载下来解压出来根据里面的相关教程来操作就可以了,很简单的,如果你也需要的话就一起来看看吧。软件提示注意!! 此过程会...

weixin_33212263的博客 5387

arcgis面填充图案_ArcGIS API for js 实现点、线、面等图形的绘画

今天总算敲定实习的事,也不知道未来等待我的将是什么,但是我知道我既然选择了就要把它做好,选择就不要后悔,走下去====开车开车一、实现的思路首先声明一个GraphicLayer的图层,(该图层是客户端类型图层,与ArcGIS Server发布的图层没有任何联系,绘画的对象也在客户端完成)然后生命工具类Draw,根据点选的不同进行绘画,然后将绘画的图形进行渲染即可。二、HTML布局点击你所要绘画的...

weixin_39551366的博客 2661

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

从原理出发理解并实现经典的DOA估计算法

m0_55845774的博客 1万+

arcgis api for js 4.* 点、线、面、圆、矩形的绘制

用的"esri/views/draw/Draw" var draw=new Draw({view:view}); var graphicsLayer=new GraphicsLayer(); map.add(graphicsLayer); 画点 function drawPoint(view,graphicsLayer,draw){ require([ "esri/Graphic", ], function(

baijian10的博客 2444

FPGA远程升级避坑实录:用STARTUPE2原语搞定Flash时钟,K7325T实测有效

本文深入解析了FPGA远程升级中的STARTUPE2原语应用,特别针对K7325T芯片的Flash时钟问题提供了实测有效的解决方案。通过详细的原语工作机制、Vivado工程实现步骤及调试技巧,帮助工程师规避常见陷阱,提升远程升级的可靠性和效率。

weixin_42558093的博客 141

C#海康威视摄像头控制,将IntPtr转换成Bitmap图片

C#通过skd控制海康威视摄像头,获取bitmap格式图片

ReflexMechanism的博客 6586

ArcGIS API for js 实现点、线、面等图形的绘画

今天总算敲定实习的事,也不知道未来等待我的将是什么,但是我知道我既然选择了就要把它做好,选择就不要后悔,走下去====开车开车 一、实现的思路 首先声明一个GraphicLayer的图层,(该图层是客户端类型图层,与ArcGIS Server发布的图层没有任何联系,绘画的对象也在客户端完成)然后生命工具类Draw,根据点选的不同进行绘画,然后将绘画的图形进行渲染即可。 二、HTM...

weixin_30782293的博客 1580

Allegro如何输出ODB文件操作指导

在PCB设计完成之后,需要输出生产文件用于生产加工,除了gerber文件可以用生产制造,ODB文件同样也可以用于生产,如下图。用Allegro如何输出ODB文件,具体操作如下。如何输出ODB文件操作指导。

weixin_54787054的博客 7203

arcgis api for javascript 学习(五) 实现地图绘制工具

1、本文实现的功能为鼠标与地图之间的交互,能够在地图上绘制不同形状的图形 2、代码部分主要讲到的为Graphic函数的相关功能 <!DOCTYPE html> <html> <head> <title>地图绘制工具</title> <meta http-equiv="content-ty...

weixin_38167826的博客 543

windows exe爬虫:exe抓包

在不知情所拦截应用使用的流量时,所以建议用Wireshark。本文利用python代码,实现自动拦截,写入pcap包,并用代码分析流量的协议。这样会在本地目录下生成capture_inbound.pcap,可以用wireshark分析,也可以利用python代码进行分析,如果使用python代码进行分析,需要借助pyshark或者scapy。使用的python WinDivert的包,当然前提也是需要安装Wireshark软件,设置环境变量,并安装pydirvert包。

youbingchen的博客 616

Apollo 9.0 速度非线性规划算法 – piecewise jerk speed nonlinear optimizer Ⅰ

二次规划的速度规划算法(PiecewiseJerkSpeedOptimizer)的存在两个问题: 这里以一张图来说明上面的问题,假设存在一个实际限速区间(或曲率很大需要降速的区间)[S1, S2],PiecewiseJerkSpeedOptimizer的做法是根据动态规划的st曲线(黑色),找到具体的时间区间[T1, T2],然后对区间[T1, T2]内所有的点施加约束或惩罚。但是二次规划平滑后的曲线(黄色)发生了变化,那么限速区间[S1, S2]对应的时间区间[T1, T2]也发生了变化,所以实际应该是对

WaiNgai 332

arcgis for js 开发-点线面的绘制

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>第一个地图应用</title&gt...

chiguozhu9463的博客 995

【AI智能体】全场景AI智能体工作台WorkBuddy实战操作详解

全场景AI智能体工作台WorkBuddy实战操作详解

congge 5489

ArcGIS API for JavaScript SketchViewModel实现增加点、线、面、矩形、圆形与删除功能

ArcGIS API for JavaScript SketchViewModel实现增加点、线、面、矩形、圆形与删除功能

QY1021371614的博客 2933

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

arcgis js平滑线工具_ArcGIS API for js 实现点、线、面等图形的绘画

今天总算敲定实习的事,也不知道未来等待我的将是什么,但是我知道我既然选择了就要把它做好,选择就不要后悔,走下去====开车开车一、实现的思路首先声明一个GraphicLayer的图层,(该图层是客户端类型图层,与ArcGIS Server发布的图层没有任何联系,绘画的对象也在客户端完成)然后生命工具类Draw,根据点选的不同进行绘画,然后将绘画的图形进行渲染即可。二、HTML布局点击你所要绘画的...

weixin_39583162的博客 389

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Arcgis Javascript (三) 绘制点,线,多边形

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, us...

yiyueqinghui的博客 2496

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ArcGIS.Server.9.3和ArcGIS API for Flex实现GraphicsLayer上画点、线、面(五)

目的: 1.ArcGIS API for Flex实现GraphicsLayer上画点、线、面。 准备工作: 1.这次地图数据就用Esri提供的http://server.arcgisonline.com/ArcGIS/rest/services/NPS_Physical_World_2D/MapServer。 完成后的效果图: 开始: 1.启动Flex Builder3新建工程以

luckypeng的专栏 1274

arcgis for js 实现点、线、面、手动线、手动面缓冲区分析功能

1.案例中使用的地图服务都可以在arcgis server manager中创建地图服务器切片地址和buffer服务地址; 实现全部代码如下; 2.可以自定义动态选择缓冲区距离长度,缓冲区投影坐标系,缓冲区距离单位等; 3.先实现过程中在缓冲区坐标系中遇到些问题(Buffer Spatial Reference WKID),在下一篇中重点介绍下; 代码如下:

wo_buzhidao的博客 5899

Android GIS开发系列-- 入门季(3) GraphicsLayer添加点、线、面

GraphicsLayer是图形图层,可以自定义图形添加到地图上。调用GraphicsLayer的addGraphic方法就能添加图形,此方法要一个Graphic对象,此对象的构造方法是Graphic(Geometrygeometry,Symbolsymbol),前面第一个是要素,而Geometry的子类有Envelope,MultiPath,MultiPoint,Point,Seg...

weixin_30657541的博客 168

Arcgis for Js实现graphiclayer的空间查询(续)

上文中,实现了简单的针对graphiclayer的空间查询工作,在本节,将更加具体的介绍针对graphiclayer的空间查询。首先,空间查询的方式:提供多种类型的空间查询,包含点周边、线周边、面内等多种方式。其次,图形绘制完毕后状态的展示;再次,结果的显示。实现后的结果例如以下: 点周边——输入缓冲区距离 点周边——查询结果 线周边——输入...

weixin_30610755的博客 102

ArcGis缓冲区分析

所以我的思路如下: 使用arcgis javascript api 的Draw工具( esri/toolbars/draw ),主要功能是绘制出点线面。 然后再计算绘制出来的图形,这里需要使用geometryEngine( esri/geometry/geometryEngine 3.13才添加的新工具 ),主要功能是计算对应的图形长度面积等。这里也可以使用arcgis server里面的服务来...

qq22692150的博客 2765
上一篇: 微信小程序开发--初步学习创建项目
下一篇: ArcGIS
蜗牛与藤曼
博客等级 码龄9年 1万+粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值