using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using ESRI.ArcGIS.Client;

using ESRI.ArcGIS.Client.Geometry;

using ESRI.ArcGIS.Client.Tasks;

using System.Net;

using System.IO;

namespace ArcGISDemo

{

//自定义的Feature

class FeatureItem

{

public Geometry Geometry { set; get; }

public IDictionary Attributes { set; get; }

};

class Program

{

static bool AddFeature(string layerUrl, FeatureItem featureItem)

{

string url = layerUrl+"/addFeatures";

string data = "f=json"; //以json格式返回结果

ESRI.ArcGIS.Client.Graphic g = new ESRI.ArcGIS.Client.Graphic()

{

//Graphic的Attributes在ArcGIS API for WPF 中是只读的

//如果是可写的,就可以直接使用Graphic的Attributes,而不需要拼接json

//Attributes = featureItem.Attributes,

Geometry = featureItem.Geometry

};

FeatureSet fs = new FeatureSet();

fs.Features.Add(g);

//使用FeatureSet自带的ToJson函数转换,可以帮助转换Feature的Geometry对象

//ArcGIS的Geometry对象序列化为json字符串时和标准的json不太一样

string json = fs.ToJson();

int begin = json.IndexOf("[");

int end = json.IndexOf("]", begin);

string featuresJson = json.Substring(begin, end - begin + 1);

string features = string.Format("&features={0}", featuresJson);

data += features;

//使用fastJson转换Attributes

//fastJSON.JSON.Instance.Parameters.UseEscapedUnicode = false;

//string attr = fastJSON.JSON.Instance.ToJSON(featureItem.Attributes);

string attr = Newtonsoft.Json.JsonConvert.SerializeObject(featureItem.Attributes);

//int attrPos = data.IndexOf("attributes");

//将原来空的Attributes替换掉,以自己转换的json字符串实际情况为准

string para = data.Replace("\"attributes\":{}","\"attributes\":"+attr);

string res = PostData(url, para);

//处理返回的结果

if (res.Contains("error"))

return false;

Dictionary>> resDic

= Newtonsoft.Json.JsonConvert.DeserializeObject>>>(res);

if (resDic.ContainsKey("addResults"))

{

List> addRes = resDic["addResults"];

foreach (Dictionary dic in addRes)

{

if (dic.ContainsKey("success"))

{

if (dic["success"].ToString().ToLower() == "true")

return true;

else return false;

}

}

}

return false;

}

static string PostData(string url, string data)

{

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

byte[] bs = Encoding.UTF8.GetBytes(data);

Stream reqStream = request.GetRequestStream();

reqStream.Write(bs, 0, bs.Length);

reqStream.Close();

string responseString = null;

using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)

{

StreamReader reader = new StreamReader(response.GetResponseStream());

responseString = reader.ReadToEnd();

reader.Close();

}

return responseString;

}

static void Main(string[] args)

{

string url = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/FeatureServer/0";

MapPoint point = new MapPoint(105, 30);

FeatureItem fi = new FeatureItem();

fi.Geometry = point;

fi.Attributes = new Dictionary();

fi.Attributes.Add("description", "测试点");

bool res = AddFeature(url, fi);

if (res)

{

Console.WriteLine("添加要素成功!");

}

else

{

Console.WriteLine("添加要素失败!");

}

Console.ReadKey();

}

}

}

java调用arcgis rest服务器_c#调用arcgis地图rest服务示例详解(arcgis地图输出)相关推荐

  1. java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...

    原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解 Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构.集群架构.分布式架构.SOA架构和微服务架构.下 ...

  2. java vector删除指定元素_C++ vector删除元素(数据)详解

    正像所说的那样,只能通过容器的成员函数来删除元素.可以通过使用 vector 的成员函数 clear() 来删除所有的元素.例如: std::vector data(100, 99);// Conta ...

  3. java与与短路与_Java中短路运算符与逻辑运算符示例详解

    1.逻辑运算符(部分) 符号 名称 && 短路与运算符 || 短路或运算符 & 与运算符 | 或运算符 对于理工科学习者来说,逻辑运算是较为基础的概念,通常会在大一的离散数学课 ...

  4. c# 服务器性能监控,C#服务器性能监控之WMI的代码示例详解

    1.WMI简介 WMI是英文Windows Management Instrumentation的简写,通过使用WMI,我们可以获取本地或远程服务器的性能参数和进程运行情况,以及大部分硬件信息,但前提 ...

  5. java 事件监听应用_Spring Boot应用事件监听示例详解

    前言 本文主要给大家介绍了关于Spring Boot应用事件监听的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1. Spring Boot特有的应用事件 除了Spring ...

  6. ad域需要自建dns服务器吗,创建AD DS域服务(图文详解)

    Active Directory概念 AD(活动目录):是一种组织资源信息的方法,目录的意义在于我们可以通过标题或者说搜索条件来简单而有效率的在大量数据中查找匹配的信息.支撑这种信息检索的技术就是LD ...

  7. java黄金分割数的解题思路_java 实现黄金分割数的示例详解

    黄金分割数 0.618 与美学有重要的关系.舞台上报幕员所站的位置大约就是舞台宽度的 0.618 处, 墙上的画像一般也挂在房间高度的 0.618 处,甚至股票的波动据说也能找到 0.618 的影子- ...

  8. Java调用SMSLib用单口短信猫发送短信详解

    技术园地 当前位置:短信猫网站主页 > 技术园地 > [转载]Java调用SMSLib用单口短信猫发送短信详解 发布时间:2017/02/09 点击量:620 SMSLib是Apache的 ...

  9. java网络编程阻塞_Java网络编程由浅入深三 一文了解非阻塞通信的图文代码示例详解...

    本文详细介绍组成非阻塞通信的几大类:Buffer.Channel.Selector.SelectionKey 非阻塞通信的流程ServerSocketChannel通过open方法获取ServerSo ...

最新文章

  1. python 类变量、实例变量、参数、实例方法、类方法、静态方法 的用法和区别
  2. 高德 Serverless 平台建设及实践
  3. 尝试使用Java6API读取java代码
  4. python中什么是按位取反_js中怎么理解按位取反?
  5. laravel5.5 __construct函数 无法使用session() 解决方法和实例
  6. mongodb的mapReduce查询
  7. 关于Ajax的一揽子工程(2)
  8. x64 盗版PCHunter
  9. 思科防火墙配置命令(详细命令总结归纳)
  10. Spring之IOC
  11. 伊利诺伊香槟分校计算机排名,伊利诺伊大学香槟分校计算机专业排名好不好?_托普仕留学...
  12. android 视频解决方案,短视频SDK升级为短视频解决方案
  13. 传统服务器销售转型,传统IDC企业云化转型有了新思路!
  14. 生活 or 办公——怎么能少了 PeakDo 毫米波无线投屏器呢
  15. java连连看项目汇报_java连连看小项目 - osc_x4wlt5vu的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. 全景拍摄—焦距与对焦教程
  17. Java数据结构(1.1):数据结构入门+线性表、算法时间复杂度与空间复杂度、线性表、顺序表、单双链表实现、Java线性表、栈、队列、Java栈与队列。
  18. python数据结构——无序,有序列表抽象数据类型,链表
  19. 使用CVX进行Matlab仿真时出现的一些问题
  20. 中国56个民族sql语句

热门文章

  1. 子窗体列表在菜单中的实现
  2. java system.setproperties_在JAVA中 System.getProperty 和 System.setProperty 方法.
  3. ubuntu查看gpu使用率_如何监控GPU卡的使用率(Linux)
  4. python多线程模块_python 多线程模块参考
  5. zabbix查看mysql同步_Zabbix 检测Mysql数据库的主从同步
  6. 一个栈桢对应着一个方法
  7. html中input两个圆括号,如何使用Jquery将光标聚焦在两个括号(括号)之间?
  8. 网络服务器有保存文件,将收到的图片保存到网络服务器上的文件夹
  9. 电脑软件:巧用微软小工具解决日常问题!
  10. Linux删除重复内容命令uniq笔记