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.pswp.cn/news/275768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275768.shtml
英文地址,請注明出處:http://en.pswp.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基礎系列前言我們知道,代碼上線前要經過壓縮,美化…