arcgis server发布服务地图不显示_ArcGIS地图要素图层(Feature Layer)发布及调用

14789527159b687a2b5df2521e2c46d6.gif

关键词:ArcGIS,ArcGIS Server,SQL, PostgreSQL

动态地图服务主要用于地图的展示,其还有一个不足,即它不允许用户与地图的子图层进行交互,不能遍历得到每个图层,也不能查询图层。这里使用要素图层(Feature Layer)来代替它。

Feature Layer可以访问每个空间要素及其属性,可以将其看成是ArcMap中的要素类(Feature Class),它可以接受用户的查询.

1.配置ArcMap、ArcGIS Server和PostgreSQL

由于ArcMap是32位,而PostgreSQL是64位,32位的桌面程序ArcMap无法连接64位的Postgesql数据库的,因此,需要将PostgreSQL 32位的动态库文件拷贝到ArcMap的bin目录下。将tools\postgresql-9.0.5-1-windows-x86-dlls目录下的5个dll文件(这五个dll 是从32位的postgressql客户端中抽取出来)拷贝到ArcMap的bin目录下,

我的机器上是C:\Program Files (x86)\ArcGIS\Desktop10.2\bin

f25ab8fae57090d5b5047c76c27f2e37.png 

12b1634138d1f8dd3fced6d514fe8b1c.png

612bbe355344e078ff6cdcc80e5dfdc5.png

f25ab8fae57090d5b5047c76c27f2e37.png 

跟上述情况类似,要从 ArcGIS for Server 连接,则需要 64 位文件。将PostgreSQL 64位的动态库文件拷贝到ArcGIS for Server的bin目录下。将tools\postgresql-9.0.5-1-windows-x64-dlls目录下的5个dll文件(这五个dll 是从64位的postgressql客户端中抽取出来)拷贝到ArcGIS for Server的bin目录下,我的机器上是C:\Program Files\ArcGIS\Server\bin。

f25ab8fae57090d5b5047c76c27f2e37.png

84da51fd05dd75e38c3c310f4872a34b.png

c50e9ed5ad147de51e4698c7252632f6.png

f25ab8fae57090d5b5047c76c27f2e37.png 

如果已经运行 ArcGIS for Server 正在运行,则请重启 ArcGIS Server 以便识别放入 bin 目录的文件。

f25ab8fae57090d5b5047c76c27f2e37.png

38f945738fde68321ea24c833ad09722.png

在 PostgreSQL 中创建地理数据库依赖于是否存在 ST_Geometry 库。为了将空间数据存储在PostgreSQL中,需要利用ST_Geometry 存储类型存储空间数据,ST_Geometry 数据类型可通过OGC定义的SQL语言来进行访问,通过向表示地理要素的对象(点、线及面)提供存储空间,此存储类型扩展了数据库的功能。为了使PostgreSQL支持ST_Geometry 存储类型,需要将st_geometry.dll动态库拷贝到PostgreSQL的lib文件夹下。st_geometry.dll可以从ArcGIS桌面安装目录下获得,比如我的在C:\ProgramFiles(x86)\ArcGIS\Desktop10.2\DatabaseSupport\PostgreSQL\Windows64(我的机器是64位),然后拷贝到C:\Program Files\PostgreSQL\9.0\lib  可以根据自己的安装路径来设置。

f25ab8fae57090d5b5047c76c27f2e37.png

022f3e4c9dba15dae90ab73a206e0cc9.png

796e1c8a698668cfed1f7a0e5179dee7.png

f25ab8fae57090d5b5047c76c27f2e37.png 

1.2 创建企业级地理数据库

在Arc Toolbox中打开【创建企业级地理数据库】工具箱,如下图所示。

42b7b84b6a66b106352e65f29157e05d.png

d45daf708e8aa1efb05642d07cab8931.png

f25ab8fae57090d5b5047c76c27f2e37.png f25ab8fae57090d5b5047c76c27f2e37.png 

提供以 postgres 超级用户连接 PostgreSQL 数据库集群所需的信息,以创建数据库和 sde 用户。此外,还必须指向在授权 ArcGIS for Server 实例时生成的密钥代码文件。【实例】是PostgreSQL运行的主机名,本例中是本机localhost,数据库管理员密码是PostgreSQL超级用户的密码postgres,地理数据库管理员密码设置为sde。点击【确定】,等待创建成功。

8ba0bcc7d7ff10dea131f26009048b8a.png

ec2ca5eed3aa1ae2e8319ea05e94bb39.png

f25ab8fae57090d5b5047c76c27f2e37.png

这样,在 PostgreSQL 中就创建了数据库、sde 用户、sde 方案及地理数据库。

3.连接到已创建的地理数据库

存储在地理数据库中的数据应归sde 用户之外的其他用户所有。要创建用户,必须先以数据库管理员(本例采用 postgres 超级用户)连接地理数据库。

ArcMap 的目录树中,展开【数据库连接】节点,然后双击【添加数据库连接】。将打开【数据库连接】对话框。

提供以 postgres 超级用户连接新建数据库所需的信息。本例中,以 postgres 用户连接新建的 sde地理数据库:

f25ab8fae57090d5b5047c76c27f2e37.png 

f5429a657988566777270b979622fab0.png

由于将在地理处理工具中使用此连接文件,因此必须选中【保存用户名和密码】。运行此工具后,应在连接文件中取消选中此选项,以不同用户进行连接,或者删除此连接文件从而防止可以访问此文件的其他用户以数据库管理员登录地理数据库。

单击【确定】创建连接。在目录树中的数据库连接节点下出现新的连接文件。

接下来,可以运行创建数据库用户工具。

4.从文件型数据库迁移到企业级地理数据库

打开ArcCatalog,浏览到Bestaurants.gdb地理数据库。

右击Belize_Landbase,选择复制

f25ab8fae57090d5b5047c76c27f2e37.pngf25ab8fae57090d5b5047c76c27f2e37.png

dfcc1f9bedf50acc7966642139c62740.png

浏览到kobe.localhost.sde数据库连接,右击选择粘贴。对要素类Food_and_Drinks同样做此操作,弹出以下对话框。点击确定,完成数据传输。

3887dc91fa3a6f120bdd4a42ded86705.png

这样,企业级数据库中就包含如下数据,注意在要素类和关系类之前都有数据库和用户名(表示方案,每个PostghreSQL用户都自己的方案schema)前缀。

7baefc5d05837514da8e1b9f02e5277a.png

5.发布要素服务

在ArcMap中,选择【文件】菜单的【共享为】-【服务】,打开【共享为服务】向导。

f25ab8fae57090d5b5047c76c27f2e37.png

0a8c30b698f438fa1975dd98853869aa.png

选择【发布服务】,点击【下一步】,服务名称填写BelizeFS,表示Belize要素服务,点击【下一步】,点击【继续】,选择【功能】中的【Feature Access】来开启要素服务

f25ab8fae57090d5b5047c76c27f2e37.png

021f861342de7e70a01ae8a183de4b71.png

点击【分析】,错误如下,要素服务需要一个已注册的数据库

f25ab8fae57090d5b5047c76c27f2e37.png

7ada246a62b6e3206ab3da1c97002811.png

右击该错误,选择【显示数据存储注册页面】

f25ab8fae57090d5b5047c76c27f2e37.png

d840998755872d9cbe74ec27a8a8b3db.png

打开【ArcGIS Server属性】对话框,点击加号,选择【注册数据库】。

f25ab8fae57090d5b5047c76c27f2e37.png

a53caca58853870f07628213dd02f254.png

在【注册数据库】对话框中,点击【导入】,选择刚建立的数据库连接(我的是kobe.localhost.sde连接),确保【与发布者数据库连接相同】选项选上,给注册数据库起个名字,点击【确定】。

f25ab8fae57090d5b5047c76c27f2e37.png

bd3efdeaf9f122d15506dbe809741150.png

完成的数据库注册如下。点击【确定】。

f25ab8fae57090d5b5047c76c27f2e37.png 

0a12138d797a5b8edd911ba774ffae88.png

点击【分析】,应该看不到错误,但可能还有警告,如下图所示。

f25ab8fae57090d5b5047c76c27f2e37.png

0c2bc98485169bc917e537f8be5adf1a.png

继续发布要素服务,可以成功发布。

访问:http://localhost:6080/arcgis/rest/services/,可以看到发布的服务。

在require函数中加上FeatureLayer:

require(["esri/map","esri/layers/featurelayer", "esri/dijit/Legend"],

function(Map, FeatureLayer, Legend) {

//load the layer into an object

var lyr_foodanddrinks = new esri.layers.FeatureLayer

("http://localhost:6080/arcgis/rest/services/Belize/MapServer/0",

{

outFields: ["*"]

}

);

 //load another layer into an object

var lyr_landbase = new esri.layers.FeatureLayer

("http://localhost:6080/arcgis/rest/services/Belize/MapServer/1",

{

outFields: ["*"]

}

);

}

- END -

ArcGIS中三维场景图层的发布和使用 7.72GB ARCGIS  ERDAS  ENVI干货教程网盘下载 利用ArcGIS将一系列的点图层,自动连接转换为线图层 ArcGIS Server 发布切片地图服务 ArcGIS制图表达 | 这5个小技巧给你的制图效果添分! ArcGIS专题图制作和地图打印(PPT可下载)cd6a380ebe492d0f2a7f4b0de951a12a.gif31287c463c6f5889e543becaf8e3a8cc.gif戳原文,更有料!