`

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中常见的一种筛选数据的方法。例如,要查询土地使用类别以"C"开头且容积率大于2的多边形,可以使用SQL语句:"LANDUSE" LIKE 'C%' AND "FAR" > 2。这里的LIKE关键字允许使用...

    GIS专业英语常用术语

    ### GIS专业英语常用术语解析 #### 一、引言 地理信息系统(Geographic Information System,简称GIS)是一种用于收集、存储、分析、管理和展示与地理位置相关的数据的技术系统。随着全球化的发展,掌握GIS的专业...

    中山大学GIS考研部分总结.pdf

    中山大学的GIS考研部分总结涉及到多个重要概念和技术,包括元胞自动机(Cellular Automata, CA)、GIS的空间动态建模、多智能体系统(Multi-Agent System, MAS)以及面向对象的遥感影像分类。 元胞自动机是一种模拟...

    几种常用GIS软件之间的数据转换方法

    以下将详细阐述这些常用GIS软件之间的数据转换方法。 1. ArcGIS to AutoCAD ArcGIS提供了丰富的数据导入和导出功能,可以通过“导出”或“发布为”命令将GIS数据转换为AutoCAD兼容的格式,如DWG或DXF。在ArcGIS中...

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

    - **方法和技术**:解释选用的方法和技术,包括理论依据和选择理由。 - **实验设计与实施**:描述实验设计和过程,包括可能出现的问题及解决方案。 - **结果分析**:通过图表和数据分析结果,验证研究假设。 - *...

    GIS图标大全(项目开发常用兼个性图标)

    总结来说,这个资源包提供了大量适用于GIS项目的图标,不仅满足了基本的GIS功能需求,也为个性化设计提供了便利。对于GIS开发者而言,这是一份宝贵的素材库,有助于创建出直观、美观且高效的GIS应用。同时,结合...

    中国矿业大学(北京)2013年GIS基础考研真题.doc

    本文档总结了中国矿业大学(北京)2013年GIS基础考研真题.doc的主要知识点,涵盖了GIS的基本概念、栅格数据、DEM模型、投影、缓冲区分析、拓扑关系、空间关系、栅格数据结构、矢量数据结构、编码方法、计算方法、...

    2021年GIS知识点总结.pdf

    2021年GIS知识点总结 地理信息定义:地理信息是关于地理实体和地理现象性质、特性和运动状态表征和一切有用的知识,它是对表达地理特性与地理现象之间关系的地理数据解释,而地理数据则是对地理特性和现象间关系...

    GIS设计与实现-GIS设计思想与方法PPT课件.ppt

    在GIS工程实践中,没有放之四海而皆准的设计方法,但可以通过总结标准法则和经验,为特定项目提供指导。这需要工程师根据实际情况灵活应用,发挥创新精神,确保GIS系统的高效、稳定和用户友好。 总之,GIS设计与...

    几种组件GIS产品介绍

    总结来说,TopMap、ArcInfo和SuperMap Objects都是组件GIS产品中的佼佼者,分别以易用性、全面性和灵活性为特点,满足不同开发者和应用场景的需求。这些产品不仅推动了GIS技术的发展,也为各行业的信息化建设提供了...

    GIS项目开发详细文档

    开发语言可选用Python、Java、C#等,常用GIS库有GDAL/OGR、QGIS API、ArcGIS API for Python等。同时,前后端分离的设计模式和RESTful API的使用也是现代GIS项目开发的趋势。 六、GIS地图服务 GIS项目往往需要提供...

    武汉大学GIS专业考研复试试题

    2. **GIS数据源考察**:可能会提问:“请列举至少三种GIS常用的数据源,并分别阐述它们的特点。”这里的数据源可以包括卫星影像、航空照片、数字地形模型(DTM)、矢量地图等。 3. **GIS技术比较**:题目可能设置为...

    GIS设计与实现PPT讲义

    GIS(Geographic Information System,地理...总结,GIS设计与实现涵盖了数据的获取、存储、分析、展示等多个环节,涉及多种技术和方法。理解和掌握这些知识点,对于提升地理信息处理能力和开发高效GIS应用至关重要。

    2017 esri gis大赛个人组试题总结及答案

    ### 2017 ESRI GIS大赛个人组试题总结及答案 #### 1. 克里金插值法的理论核心及其应用 克里金插值法是一种在地理信息系统(GIS)领域广泛应用的空间插值技术,其理论核心是**变异分析**。变异分析通过研究随机过程...

    GIS基础概念及常用知识介绍培训

    总结来说,GIS是一个强大的工具,它将地理信息与信息技术结合,通过坐标系和地图投影解决了从球面到平面的转换问题,广泛服务于现代社会的多个领域,提升了数据分析和决策制定的效率与准确性。理解并掌握GIS的基础...

    gis 空间分析课件

    GIS(Geographic Information System,地理信息系统)是一种集成了...课程可能还会涉及常用的GIS软件,如ArcGIS、QGIS等的操作教程,帮助你熟悉软件界面和功能。记得在实践中不断巩固理论知识,提高自己的GIS技能。

    GIS的英文翻译成中文了

    4. 空间分析方法:介绍GIS常用的空间分析工具,如缓冲区分析、网络分析、地形分析等,并结合具体案例说明其应用。 5. 模型构建与应用:针对选题建立合适的地理模型,如基于GIS的最短路径算法或空间叠加分析,阐述...

    GIS数据处理技术

    总结,GIS数据处理技术涵盖数据的获取、管理、分析和呈现等多个环节,是地理信息科学的基础。随着技术的发展,GIS在城市规划、环境保护、灾害应急等领域发挥着越来越重要的作用。掌握这些技术,能帮助我们更好地理解...

    目前国内国际主流GIS平台软件对比

    #### 六、总结 综上所述,SuperMap、MapGIS、MapInfo和ArcGIS各自具有独特的优势。SuperMap凭借其开放性、可扩展性和高性能,在国内外市场取得了显著的成绩;MapGIS则更多地服务于定制化的项目需求;MapInfo在数据...

    基于ARM-Linux的嵌入式GIS关键技术研究.pdf

    文章首先分析了MapInfo地图数据格式,这是嵌入式GIS常用的数据源。MapInfo的数据由MIF和MID文件组成,其中MIF文件存储空间数据,MID文件存储属性数据。由于MapInfo地图没有明确的拓扑关系,它通过特定的地理运行符和...

Global site tag (gtag.js) - Google Analytics