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

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();

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Semantic Element

Semantic Element 1.什么是语义化 根据内容的结构,选择合适的标签(代码语义化)便于开发者阅读。写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。 语义(semantic)  语义化标记,是指每种标记表示一…

玉伯:开源有带给我什么

在2021年527蚂蚁技术日上,蚂蚁内源社区举办了内源专场,在专场上玉伯给大家分享了《开源有带给我什么》,以下为演讲的图文整理。我的开源之路我从2009年到2018年,接近十年时间,一直在做开源的一些事情,在这个…

python并行运算库_最佳并行绘图Python库简介:“ HiPlot”

python并行运算库HiPlot is Facebook’s Python library to support visualization of high-dimensional data table, released this January. It is particularly well known for its sophisticated interactive parallel plot.HiPlot是Facebook的Python库,用于支持…

Asp.net 文件上传的 FileUpload FileName 和 FileUpload PostedFile.FileName的细节问题

Asp.net 文件上传的 FileUpload FileName 和 FileUpload PostedFile.FileName的细节问题 ASP.NET 文件上传估计大家都用得很熟悉,常用控件 FileUpload 。 主要步骤: 1.判断是否合法 2.获得文件的路径 (包括目录的完整路径,同时可能…

java 友元_C++ 友元函数 | 菜鸟教程

对教程中的例子,稍加修改,添加了友元类的使用。#include using namespace std;class Box{double width;public:friend void printWidth(Box box);friend class BigBox;void setWidth(double wid);};class BigBox{public :void Print(int width, Box &…

刚学编程的程序员必备这5大编程网站,你知道几个?

一个好的网站,就是程序员学编程的基地。 虽说新手程序员也许知道一些在线编程网站,但是质量上乘的编程网站又知道几个呢? 下面就来给大家推荐5个质量上乘的编程网站: 0、Leetcode LeetCode是大名鼎鼎的在线刷题网站,通过该网站的…

【赠书福利】不扶好眼镜,请别打开这本挑战JS语言特性的书

文末赠福利大家好,我是若川。为感谢大家一直以来的支持和肯定,文末抽《JavaScript悟道》3本包邮送和若干红包,详细规则请看文末哦。"人们不停地给老化的语言“整容”,拼命地往其中注入各种新的特性来稳住其流行地位&#xff…

MySQL存储过程之事务管理

MySQL存储过程之事务管理 ACID:Atomic、Consistent、Isolated、Durable 存储程序提供了一个绝佳的机制来定义、封装和管理事务。 1,MySQL的事务支持 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: Java代码 MyISAM&#xff…

罗马数字 java_【leetcode刷题】[简单]13.罗马数字转整数(roman to integer)-java

罗马数字转整数 roman to integer题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII &a…

我在工作中是如何使用Git的

大家好,我是若川。今天分享一篇关于git的好文章。我自己经常用命令行终端和git缩写。具体可以看我以往的文章。使用 ohmyzsh 打造 windows、ubuntu、mac 系统高效终端命令行工具,用过都说好。点击下方卡片关注我、加个星标学习源码整体架构系列、年度总结…

克服浮躁_设计思维:您克服并赢得低迷的最终工具。

克服浮躁设计思维101 (Design thinking 101) Let’s begin by getting ourselves clear on the question: What is design thinking?让我们首先弄清楚问题:设计思想是什么? Many people have an impression that design thinking has something to do …

mongodb数组字段prefix匹配返回

DOC: https://docs.mongodb.com/manu... collection(test)结构 {_id: Objectd("123456789"),category: [apple_1,apple_2,banana_1,banana_2] }Question: 对test表的所有数据做category过滤,返回category中以apple开头的元素 表原数…

java参数化查询_小博老师解析Java核心技术 ——JDBC参数化查询(二)

[步骤阅读四]SQL注入按照以上方式开发,确实已经完成了基本的用户登录业务需求,但是这么做的话可以会出现一个比较严重的问题,那就是容易被SQL注入。所谓SQL注入,就是在需要用户填写信息,并且这些信息会生成数据库查询字…

Lightbox 效果

网上其实到处都是。 遮罩层: .transparent {filter:alpha(opacity0); -moz-opacity: 0.0; opacity: 0.0; z-index: 90;background-color:#000;float:left;top:0;left:0;position:absolute;width:100%; }主要业务层:.rollover5 {display:none; position:a…

前端抢饭碗系列之Vue项目如何做单元测试

大家好,我是若川。今天分享一篇vue项目如何做单元测试的好文,文章比较长,建议先收藏,需要时用电脑看。点击下方卡片关注我、加个星标学习源码系列、年度总结、JS基础系列关于单元测试,最常见的问题应该就是“前端单元测…

React Native组件开发指南

React Native的组件开发一直处在一个比较尴尬的处境。在官方未给予相关示例与脚手架的情况下,社区中依然诞生了许许多多的React Native组件。因为缺少示例与规范,很多组件库仅含有一个index.js文件。这种基础的目录结构也导致了一些显而易见的问题&#…

java activiti jbpm_activiti和jbpm工作流引擎哪个比较好?

原标题:activiti和jbpm工作流引擎哪个比较好?在常用的ERP系统、OA系统的开发中,工作流引擎是一个必不可少的工具。之前在选择工作流引擎时曾经在activiti和jbpm之间有过比较,当时做出的决定是使用jbpm,但实际开发过程中…

C/C++中善用大括号

C/C中善用大括号转载于:https://www.cnblogs.com/satng/archive/2010/12/17/2138840.html

识别人声_演唱人声的5个技巧

识别人声什么是声乐伴奏? (What is Vocal Comping?) Vocal comping describes the process of combining multiple vocal takes into one “supertake” that has the best parts of each. This is called a “composite track,” or comp for short. Many instrum…

你知道source map如何帮你定位源码么?

大家好,我是若川。今天分享一篇我们经常会忽略的定位原始代码位置原理的文章。文章不长,例子不错,可以先收藏,有空时动手试试。学习源码系列、年度总结、JS基础系列前言我们知道,代码上线前要经过压缩,美化…