使用ArcGIS Server 9.3和JavaScript API实现地图功能

3星 · 超过75%的资源 需积分: 0 11 下载量 128 浏览量 更新于2024-07-31 收藏 972KB DOC 举报
"ArcGIS.Server.9.3和ArcGIS API for JavaScript实现基本的地图功能" 本文主要探讨了如何使用ArcGIS.Server.9.3和ArcGIS API for JavaScript来实现地图服务的基本功能,包括地图叠加显示、图层过滤、视图范围设定以及地图鼠标移动事件的处理。ArcGIS API for JavaScript是Esri推出的一款轻量级的客户端开发框架,它基于JavaScript,专为构建Web应用程序中的地图功能而设计。 准备工作包括在ArcGIS Server 9.3上发布名为"usa"的Map Service并确保其运行。此外,由于没有现成的瓦片数据地图,采用了Esri提供的REST世界地图服务,其URL为http://server.arcgisonline.com/ArcGIS/rest/services/NPS_Physical_World_2D/MapServer。 完成这些步骤后,可以实现以下功能: 1. **地图服务叠加显示**:允许将两个或多个地图服务叠加在同一个地图上,以便展示不同层次或类型的数据,例如,可以将地理边界服务与人口统计信息服务叠加,提供更丰富的地理信息。 2. **图层过滤**:通过对图层应用过滤条件,可以控制哪些数据在地图上可见,这有助于用户专注于特定的数据子集,提高可视化效果。 3. **地图视图范围设置**:用户可以根据需要调整地图的显示范围,比如聚焦特定区域,或者缩放以查看更详细的地理信息。 4. **地图鼠标移动事件**:通过监听鼠标移动事件,可以实现动态的信息提示或高亮,当鼠标在地图上移动时,显示当前位置的相关数据或属性。 ArcGIS API for JavaScript是ArcGIS Server 9.3新增的特性,它的出现减少了开发复杂性,因为所有的开发工作都可以在客户端的JavaScript代码中完成,不再需要同时处理服务器端的代码。这个API是基于Dojo框架构建的,这意味着开发者需要熟悉Dojo库来进行地图功能的开发。尽管对于习惯使用Prototype或jQuery的开发者来说,Dojo可能不是首选,但它提供了强大的功能,如通过Geoprocessing Services实现复杂的地理分析任务。 此外,Esri还提供了一个在线的JSAPI服务,开发者可以直接引用http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.1来在网页中使用API,而无需下载和部署本地副本。这样做的好处是方便快捷,但也意味着开发者受限于在线服务的可用性和性能。 ArcGIS API for JavaScript是构建基于Web的GIS应用程序的强大工具,它简化了地图服务的集成和交互,为开发者提供了丰富的地图操作和数据分析能力。通过学习和熟练掌握这一API,开发者能够创建出功能丰富、用户体验优秀的地图应用。

import arcpy # 输入参数 input_features = arcpy.GetParameterAsText(0) join_field = arcpy.GetParameterAsText(1) target_feature = arcpy.GetParameterAsText(2) target_field = arcpy.GetParameterAsText(3) area_threshold = arcpy.GetParameterAsText(4) # 创建空间连接 arcpy.SpatialJoin_analysis(input_features, target_feature, "in_memory/spatial_join", "JOIN_ONE_TO_ONE", "KEEP_ALL", "", "INTERSECT") # 选择面积大于阈值的连接要素 arcpy.Select_analysis("in_memory/spatial_join", "in_memory/selected_features", '"Shape_Area" > ' + str(area_threshold) + ' "Square Meters"') # 统计相同连接字段值的面积总和 arcpy.Statistics_analysis("in_memory/selected_features", "in_memory/summarized_features", "Shape_Area SUM", join_field) # 创建字典,存储连接字段值和对应的面积总和 sum_dict = {} with arcpy.da.SearchCursor("in_memory/summarized_features", [join_field, "SUM_Shape_Area"]) as cursor: for row in cursor: sum_dict[row[0]] = row # 更新目标要素中的字段值 with arcpy.da.UpdateCursor(target_feature, [target_field, join_field]) as cursor: for row in cursor: join_value = row[1] if join_value in sum_dict: area_sum = sum_dict[join_value] row[0] = str(area_sum[1]) cursor.updateRow(row) # 导出结果 arcpy.CopyFeatures_management(target_feature, arcpy.GetParameterAsText(5))运行错误:Traceback (most recent call last): File "D:\实验2\空间连接.py", line 14, in <module> File "c:\program files (x86)\arcgis\desktop10.2\arcpy\arcpy\analysis.py", line 84, in Select raise e ExecuteError: ERROR 000358: 无效的表达式 "Shape_Area" > 600 "Square Meters" 执行(Select)失败。 执行(fzzz)失败。请改正代码

2023-05-24 上传

import arcpy # 输入参数 input_features = arcpy.GetParameterAsText(0) # 连接要素 join_field = arcpy.GetParameterAsText(1) # 连接字段 target_feature = arcpy.GetParameterAsText(2) # 目标要素 target_field = arcpy.GetParameterAsText(3) # 目标字段 area_threshold = arcpy.GetParameterAsText(4) # 面积阈值 # 创建空间连接 arcpy.SpatialJoin_analysis(input_features, target_feature, "in_memory/spatial_join", "JOIN_ONE_TO_ONE", "KEEP_ALL", "", "INTERSECT") # 选择面积大于阈值的连接要素 arcpy.Select_analysis("in_memory/spatial_join", "in_memory/selected_features", "Shape_Area > " + area_threshold) # 统计相同连接字段值的面积总和 arcpy.Statistics_analysis("in_memory/selected_features", "in_memory/summarized_features", "Shape_Area SUM", join_field) # 创建字典,存储连接字段值和对应的面积总和 sum_dict = {} with arcpy.da.SearchCursor("in_memory/summarized_features", [join_field, "SUM_Shape_Area"]) as cursor: for row in cursor: sum_dict[row[0]] = row[1] # 更新目标要素中的字段值 with arcpy.da.UpdateCursor(target_feature, [target_field, join_field]) as cursor: for row in cursor: join_value = row[1] if join_value in sum_dict: area_sum = sum_dict[join_value] row[0] = str(area_sum) cursor.updateRow(row) # 导出结果 arcpy.CopyFeatures_management(target_feature, arcpy.GetParameterAsText(5))运行出现错误Traceback (most recent call last): File "D:\实验2\空间连接.py", line 13, in <module> File "c:\program files (x86)\arcgis\desktop10.2\arcpy\arcpy\analysis.py", line 84, in Select raise e ExecuteError: ERROR 000358: 无效的表达式 "Shape_Area" > 600 执行(Select)失败。 执行(fzzz)失败。请改正代码并写出完整可复制的代码

2023-05-24 上传