`

GIS常用方法总结

    博客分类:
  • GIS
 
阅读更多

 

 

// 记录下当前地图的屏幕中心点
eMyPoint2D centerPoint = new eMyPoint2D(mapWnd.getWidth() / 2, mapWnd.getHeight() / 2);

 

 

// 获得GridNo图层
eMyLayer gridNoLayer2 = mapWnd.GetMap().GetLayerByName("GridNo");

 

// 物理坐标
eMyPoint2D myPoint2D = new eMyPoint2D(px, py);

    查询一个点所在GridNo图层某个区域的GRIDNO的值

// 查询myPoint2D这个点附近100个单位的对象
eMyResultSet rs2 = gridNoLayer2.QueryByPoint(myPoint2D, mapWnd.DevToGeo(100));
// 必不可少!!获取对象
rs2.HasNext();
// 获取到GRIDNO的值,有时候查到的NewGRIDNO值是空
String NewGRIDNO = rs2.GetString("GRIDNO");

 

// 定位到某个点
	public void MoveToPoint(double px, double py) {
		MapUtil.showPoint(String.valueOf(px), String.valueOf(py));
		int jj = 0;
		if (px != -1 && py != -1) {
			System.out.println("定时器开始定位!");
			// 物理坐标
			eMyPoint2D myPoint2D = new eMyPoint2D(px, py);
			// 获得GridNo图层
			eMyLayer gridNoLayer2 = mapWnd.GetMap().GetLayerByName("GridNo");
			// 查询myPoint2D这个点附近100个单位的对象
			eMyResultSet rs2 = gridNoLayer2.QueryByPoint(myPoint2D, mapWnd
					.DevToGeo(100));
			// 必不可少!!获取对象
			rs2.HasNext();
			// 获取到GRIDNO的值,有时候查到的NewGRIDNO值是空
			String NewGRIDNO = rs2.GetString("GRIDNO");
			// GRIDNO不空
			if (!NewGRIDNO.equals("")) {
				// 不相等,就加载新地图
				if (!NewGRIDNO.equals(GRIDNO)) {
					loadNewMap(NewGRIDNO);
				}
			} else {
				System.out.println("读到的GRIDNO为空!无法自动切换地图!");
			}
			// 定位到px,py点
			mapWnd.ZoomTo(px, py, radio);
			mapWnd.reDraw();// 那个Ondraw在redraw就会触发
			mapWnd.repaint(0, 0);
		}

 

	// 加载新地图
	public void loadNewMap(String _GridNo) {
		// 切换地图,需要记录当前地图的平面中心点坐标和放大比例
		double currentZoom = mapWnd.GetZoom();
		try {
			// 是否有权限加载该地图的地图
			if (MapUtil.isLoad(gridnos, _GridNo)) {
				// SDCard有该地图的文件
				if (SDCard.hasMapFile(_GridNo)) {
					mapWnd.Close();
					int bRet = mapWnd.Open(SDCard.getMapFilePath(_GridNo));
					// 加载失败的几种情况
					if (bRet != 1) {
						MapUtil.loadError(bRet, MapBrowseView.this);
						// 还是加载原来的图
						bRet = mapWnd.Open(SDCard.getMapFilePath(GRIDNO));
						mapWnd.ZoomTo(0, 0, currentZoom);
						showBigClassLayer(bigClassName);
						mapWnd.viewEntire();
						mapWnd.reDraw();
						mapWnd.repaint(0, 0);
						// mapWnd.refreshDrawableState();
					} else
					// 加载成功
					{
						// GridNo重新赋值
						GRIDNO = _GridNo;
						showBigClassLayer(bigClassName);
						mapWnd.viewEntire();
						mapWnd.reDraw();
						mapWnd.repaint(0, 0);
					}
				} else {
					ShowMsg.showToast(MapBrowseView.this, nomapdate);
				}

			} else {
				ShowMsg.showToast(MapBrowseView.this, noloadmap);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

 

// 显示指定大类图层
	private void showBigClassLayer(String bigClassName2) {
		// 获得大类图层
		eMyLayer catetoryLayer = mapWnd.GetMap().GetLayerByName(bigClassName2);
		// 如果该大类图层不为空,显示
		if (catetoryLayer.GetName().toString() != "")
			catetoryLayer.SetVisible(true);

	}

 

		// 长按事件		
		public void OnLongPress(int x, int y) {
			// 获取标记的点的坐标
			ShowMsg.showToast(MapShiJiSelectView.this, "标记地点成功!");
			String GridCODE = "";
			eMyLayer gridNoLayer;
			eMyResultSet rs2;
			eMyTrackingLayer tl = GetMap().TrackingLayer();
			eMyGeoEvent ge = tl.GetAt("P1");
			if (ge == null) {
				// 没有这个Tag为P1的对象,就添加一个点
				eMyGeometry geom = new eMyGeometry(1, 1);
				// 逻辑坐标,不能用于查询BGCODE的值
				eMyPoint mapPoint = GetMap().DrawParam().DevToMap(x, y);
				// 设置个变量:转换成物理坐标
				eMyPoint2D eMyPoint2D = DevToGeo(new eMyPoint(x, y));
				mx = eMyPoint2D.GetX();
				my = eMyPoint2D.GetY();
				geom.SetPointAt(0, mapPoint);
				mapPoint.Dispose();
				// 设置TrackingLayer的风格
				tl.GetStyle().SetBrushColor(Color.BLUE);
				tl.GetStyle().SetAlpha(128);
				tl.GetStyle().SetPenColor(Color.RED);
				// 图标
				tl.GetStyle().SetBmpIndex(84);
				String tag = "P1";
				tl.AddEvent(geom, eGeometryType.Point, tag, 0);
				tl.SetVisible(true);
				repaint(0, 0);
				System.out.println("第一次标记的点=" + mx + "," + my + ")");
			} else {
				// 已经有了这个点了,移动这个点到新位置
				// 逻辑坐标
				eMyPoint devPoint = new eMyPoint(x, y);
				// 物理坐标
				eMyPoint2D geoPoint = DevToGeo(devPoint);
				mx = geoPoint.GetX();
				my = geoPoint.GetY();
				ge.MoveTo(geoPoint.GetX(), geoPoint.GetY(), GetMap());
				geoPoint.Dispose();
				tl.SetVisible(true);
				repaint(0, 0);
				System.out.println("第二次标记的点=" + mx + "," + my + ")");
			}

			// // 根据标记的点,查询DYWG图层上的BGCODE的值
			// gridNoLayer = mapWnd.GetMap().GetLayerByName("DYWG");
			// // 查询这个点附近100个单位的对象
			// rs2 = gridNoLayer.QueryByPoint(new eMyPoint2D(mx,
			// my),
			// 100);
			// rs2.HasNext(); // 必不可少!!获取对象
			// if (rs2 != null) {
			// GridCODE = rs2.GetString("BGCODE");
			// System.out.println("DYWG_BGCODE==" + GridCODE);
			// }
			// 定位到以标记点为中心
			// mapWnd.ZoomTo(mx, my, mapWnd.GetZoom());// 定位到该点
			// mapWnd.reDraw();// 那个Ondraw在redraw就会触发
			// mapWnd.repaint(0, 0);
			MoveToPoint(mx, my, 1);
			// 根据标记的点,查询CS_DYWG图层上的BGCODE的值
			gridNoLayer = mapWnd.GetMap().GetLayerByName("CS_DYWG");
			// 查询这个点附近100个单位的对象
			rs2 = gridNoLayer.QueryByPoint(new eMyPoint2D(mx, my), 10);
			rs2.HasNext(); // 必不可少!!获取对象
			if (rs2 != null) {
				GridCODE = rs2.GetString("BGCODE");
				System.out.println("CS_DYWG_BGCODE=" + GridCODE);
			}

			MapSelectView.loInfo.clear();
			MapSelectView.loInfo.put("x", String.valueOf(mx));
			MapSelectView.loInfo.put("y", String.valueOf(my));
			MapSelectView.loInfo.put("bgcode", GridCODE);
			MapSelectView.loInfo.put("gridno", GRIDNO);

		}

 

分享到:
评论

相关推荐

    GIS专业毕业设计常用实用技巧总结

    了解数据采集方法,可以使用已有数据集或通过采集生成。 空间分析与处理: 设计空间分析模型,考虑空间关系和空间操作。 使用GIS工具进行数据处理,例如空间查询、缓冲区分析等。 地图制作与可视化: 制作地图以展示...

    基于GIS的AHP型和ANN型脆弱性指数法在底板突水评价应用中的适用性分析

    为了让水文地质工作者更加科学地选择底板突水危险性评价方法,首先,从理论上分析、对比了2种常用的底板突水评价方法——基于GIS的层次分析(Analytic Hierarchy Process,简称AHP)型脆弱性指数法和基于GIS的人工神经...

    git常用命令总结,适合新手使用

    git常用命令总结,适合新手使用

    GIS空间数据模型分析

    分析总结常用GIS数据模型,并对GIS表达的地理空间重新进行重新理解,在此基础上提出整体GIS数据模型设计的观点

    城市规划GIS展示平台实例

    通过GIS的分析工具,主要是叠加分析、缓冲区分析、3D分析、地图代数、网络分析等一些常用的分析功能,结合GIS的高级制图输出,对城市规划中的生态敏感性分析、适建性分析容、积率分析、区域现状分析、绿地率、空地率...

    常用地图投影.doc

    地图投影是GIS和测绘遥感领域的基础内容,笔者对国内外主流电子地图的地图投影及转换做了系统的总结,包括google地图、baidu地图及国家测绘局的火星坐标系等,作出了说明,便于读者理解行业内常用地图投影。

    基于WCF的AutoCAD与ArcGIS矿图数据同步技术

    矿图数据是煤矿企业正常生产过程中一项常用的重要基础资料,在总结现有矿图数据在CAD平台与GIS平台间转换方法研究成果及其缺陷的基础上,基于WCF分布式框架结构结合二次开发技术,提出了一种跨图形平台的矿图数据同步新...

    Arcgis中的地理坐标系总结与实例

    介绍GIS(地理信息系统)中的坐标系的想法由来已久,因为工作中我发现有不少GIS 专业的学生在博士毕业后仍然在坐标系的概念理解和实际操作等方面不太清楚,而...因此以ArcGIS 为工具介绍坐标系的基本概念和常用操作。

    基于支持向量回归机的路段平均速度短时预测方法研究

    针对基于GPS/GIS的浮动车数据特点,总结其中无效的数据类型,并给出数据有效处理的方法。以支持向量机原理、交通状态预测方法为基础,分析了常用支持向量回归机、核函数及模型参数的性能,以及各核函数及模型参数对...

    ARCGIS地理信息系统空间分析实验教程

     1.2.3 常用GIS平台空间分析功能比较  1.3 ArcGIS 9概述  1.3.1 ArcGIS 9体系结构  1.3.2 ArcGIS 9软件特色  1.3.3 ArcGIS 9空间分析 第二章 ArcGIS应用基础  2.1 ArcMap基础  2.1.1 ArcMap的窗口组成  ...

    地理信息系统知识点总结.doc

    通过不同的颜色和灰度来表示 9描述空间实体的两种基本方式 栅格 矢量结构 10空间数据的三个基本特征 空间特征 属性特征 时间特征 11空间数据的拓扑关系 邻接关系 关联关系 包含关系 12元数据的性质及几种常用形式 ...

    Arcgis常用功能 Python脚本

    对一些常用功能的python脚本进行总结,方便以后直接调用。 1. 根据属性值删除行 arcpy.MakeFeatureLayer_management(outputpath, parcels_lyr)#根据输入要素类或图层创建临时图层,如果不将此图层保持到磁盘或地图...

    arcgis工具

    arcgis工具总结 1. 要素的剪切与延伸 实用工具 TASK 任务栏 Extend/Trim feature 剪切所得内容与你画线的方向有关。 2. 自动捕捉跟踪工具 点击Editor工具栏中Snapping来打开Snapping Environment对话框 捕捉设置...

    国内流行GIS平台地图投影的对比分析 (2012年)

    本文以四种常用GIS软件平台为例,介绍了在这些GIS软件中有关地图投影的相关知识:地图投影的设置、地图投影的变换、坐标系的转换或范围指定,并对这几个软件关于地图投影方面的功能进行对比分析,总结了它们的异同。

    土壤重金属全量监测方法研究进展 (2011年)

    文章在总结国内外常用的土壤重金属全量监测方法及原理的基础上,对化学分析法、仪 器分析法等异位监测方法和基于地理信息系统( GIS)、遥感( RS)和全球定位系统( GPS)的高光谱分析技术、环境磁 学技术及生物技术等原位...

    python实现两个经纬度点之间的距离和方位角的方法

    最近做有关GPS轨迹上有关的东西,花费心思较多,对两个常用的函数总结一下,求距离和求方位角,比较精确,欢迎交流! 1. 求两个经纬点的方位角,P0(latA, lonA), P1(latB, lonB)(很多博客写的不是很好,这里总结...

    postgresql12-docker19-postgis

    docker19-postgis三个组件,每个组件都是当下比较常用的版本,并且其中还包含了现在比较流行的postgis,目前只有一个docker的安装文档,其他两个我这边还没总结,有需要的先自行百度一下安装方法,有需要的小伙伴快...

    asp.net知识库

    动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...

Global site tag (gtag.js) - Google Analytics