用2007画扇区源码-mapbasic
Mapinfo及google_earth显示小区信息方法
Mapinfo及google earth显示小区信息的方法介绍本文介绍几种用mapinfo显示小区方向的方法,及google earth显示小区方向的方法。
1mapinfo显示小区方向方法一1.1将需要显示的信息按照以下模板做成Excel表格。
可自定义需要显示的字段,但必须以英文作为列标题。
扇区显示小区方向模板.xls1.2将该文件另存为txt格式。
1.3双击运行“mapper4-0.MBX”插件。
1.4点击“Mapper-Import or Convert Cell Sectors”。
1.5导入后可以扇区方式显示小区方向。
注意:1、该方法需先导入小区方向图层,再导入其他地理信息等图层。
反之,则小区方向图层无法与其他图层在一个窗口显示。
2、该方法无法显示汉字。
3、该方法无法显示每个扇区信息。
4、该方法的优点是以扇区方式显示小区,能反映小区扇区波瓣宽度,还可以做各种专题图,例如下图以RNC做专题图。
2mapinfo显示小区方向方法二2.1将需要显示的信息按以下模板做成Excel表格。
可自定义需要显示的字段,但必须以英文作为列标题。
线条显示方向模板.xls2.2用mapinof打开上面做好的Excel表格。
2.3将站点以图形方式在mapinfo上显示出来后,运行MapBasic程序。
2.4在MapBasic中写入以下程序“Update 线条显示方向模板Set Obj=CreateLine(Long,Lat,nLong,nLat)”。
写完后直接回车。
2.5回车后,退出MapBasic窗口,就可看到以线条显示各扇区方向。
注意:1、该方法可显示各个扇区的属性,例如下图显示各个扇区的扰码。
在mapinfo中选择标注,标注需要显示的字段。
2、该方法可显示中文标注。
例如下图显示各扇区名称。
3、该方法可以按需要做专题图,如下图按RNC做专题图。
3Google Earth显示小区方向方法3.1按照以上mapinfo显示小区方向方法二,做好mapinfo图层。
mapbasic教程
MapBaSiC语言及其应用一、MapBasic概述在上一篇中,我们已对MapInfo地理信息系统的使用作了具体介绍。
虽然MapInfo系统对各种地图信息及数据提供了强大的处理功能,并且能够很好地与其他数据库进行连接,但毕竟MapInfo是面向专业人员的一个人—机交互式系统。
要很好地使用它,必须具有一定的计算机水平和一定的地理信息系统知识,这对于普通用户显然过于苛刻。
为了解决这个问题,MapInfo提供了一个用户系统开发工具MapBasic,人们可以用MapBasic来设计、建立符合自己工作特点和要求的纯用户化的应用系统。
作为一种功能强大、易于使用的结构化程序设计语言,MapBasic提供了380多种函数和命令语句。
与传统的GIS相比,良好的软件集成环境、面向对象和事件处理式的编程思想,都是MapBasic的显著特征。
1.MapBasic的集成环境与特征MapBasic的软件集成环境主要包括文本编辑器(Editor)、程序编译器(Compiler)、程序链接器(Linker)和联机帮助(Help)四个部分。
文本编辑器用于程序的编辑与修改;程序编译器用于源程序编译,以生成可执行程序:程序链接器用于将若干独立的模块链接成一个应用程序:联机帮助则为程序员在线提供MapBasic的每条语句或函数的详细说明资料。
针对各类用户的不同需求,用MapBasic可以迅速制定出用户所需的菜单、按钮或对话框等;用户不仅可以修改标准的MapInfo菜单,而且可以在原来的菜单栏上增加新的菜单项;利用MapBasic用户可以方便、准确地绘制经、纬线,避免手工绘制的烦琐以及可能引起的误差;此外,用户也可以自行设计各种新的图形符号。
MapBasic中提供了一系列SQL函数和许多非常实用的语句,大大增强了对数据库进行操作的能力。
例如,仅用一条非常南单的Select语句,就可进行数据库的查询工作,实现对数据排序、求和、过滤等操作。
mapbasic程序有详细的解释
河道比降计算程序mapinfo=================================================================== ' 项目:河道比降计算' 作者:崔军明' 版本:2.2' 日期:2009-12-23'' 使用说明:' 1、新建图层,绘制主河道(也可以复制水系,然后整理出主河道)。
' 2、确定高程的单位(米/分米)。
如果与主河道相交的等高线的高程单位不统一,则将其修改一致。
' 3、运行此程序,打开需要的表,设置计算选项,计算河道比降。
' 4、如果遇到错误,根据提示将河道上的节点吸附在等高线上,并保存河道表(Stream)。
' 关闭全部表(不必保存),重新运行程序。
' 5、程序运行结束后,保存计算结果,然后浏览比降计算表(Gradient)。
' (1) 复查高程列(Elev)的单位是否统一,确认设置计算选项时所作的选择是正确的。
' 6、注意,计算某个流域的河道比降时,只需打开对应部分的等高线图层。
如果等高线图层太大,会大大影响计算速度。
'==================================================================='---------------------------------------------------------------------------------'MapBasic的调试方法:' (1) 在出错或需要的地方,使用Note(或Print)语句将变量的值显示出来。
' (2) 在MapInfo中,打开MapBasic窗口,回车就会执行当前语句。
''MapBasic中SQL的特性:' (1) Delete 语句,执行的是无条件删除,即删除表中的全部记录。
Mapinfo在网络规划中常用操作指导
Mapinfo在网络规划中常用操作指导目录1. 我如何根据工参制作一幅基站拓扑图? (3)2.我不想生成扇区图,我只想生成点状的基站分布图,怎么做? (7)3. 我想给基站拓扑图赋上颜色,最好不同的扇区颜色不同,怎么做? (8)4. 如何制作专题制图? (9)5. 我想做一幅区域划分图,怎么做? (13)6. 我想要获取一幅地图图元的经纬度,怎么做? (15)7. 如何在地图上获取一块区域的面积? (20)8. 如何在地图上查询特定的图元? (22)9. 我在下面地市办公,可是暂时还没有买到电子地图,可工作又需要一定的地图进行辅助,怎么办? (27)1. 我如何根据工参制作一幅基站拓扑图?所需:Mapinfo、sitesee插件、工参表(包含经纬度)⑴首先打开Mapinfo选择Tools—Run MapBasic Program,找到sitesee.mbx所在位置,点击打开后。
在Table 菜单下增加了WFI Sitesee子菜单。
⑵打开工参表(示例)由于Mapinfo打开xls文件时较为复杂,我们通常是将xls转换为txt后再导入Mapinfo中。
打开工参表后,点击“文件—另存为”注意选择保存类型为“文本文件(制表符分隔)(*.txt)”。
而后在Mapinfo中,点击“文件—打开”注意打开文件类型选择,点击打开后,注意如下对话框中红色部分的选择字体的设置设置为不用转换,并采用第一行作为列标题。
点击OK后即成功导入表。
⑶点击Table—WFI SiteSee—Create Site Boundaries将表中各个字段填写完全,点击OK后生成tab文件并提示填选文件保存位置。
⑷点击File—Open打开生成的Tab文件如图2.我不想生成扇区图,我只想生成点状的基站分布图,怎么做?⑴按照生成基站拓扑图的所讲的方法将工参数据转换成txt格式文件并用Mapinfo打开⑵点击Table—Create Points注意选择好x、y坐标分别采用的数据的列名,通常我们均采用经度作为x轴,纬度作为y 轴。
cascadeclassifier源码详解
Cascadeclassifier源码详解一、前言在计算机视觉和图像处理领域,Cascadeclassifier是一种常用的目标检测算法。
它可以用于人脸识别、物体检测等任务,被广泛应用于人工智能、安防监控、互联网等领域。
Cascadeclassifier引入了Haar-like特征和Adaboost算法,通过级联多个弱分类器构成的强分类器,来实现对目标的高效检测。
本文将对Cascadeclassifier源码进行详细解读,包括算法原理、代码结构、实现细节、优化技巧等方面的内容。
二、算法原理1. Haar-like特征Haar-like特征是Cascadeclassifier算法中的基础。
它通过对图像进行特征提取,将图像转换成一组特征值,用于表示图像中的区域。
Haar-like特征包括直方图、水平/垂直直线特征等,这些特征可以对目标的不同形状、纹理、边缘等进行描述。
2. Adaboost算法Adaboost算法是Cascadeclassifier的核心。
它通过训练一系列弱分类器,然后将这些弱分类器进行级联,构成一个强分类器。
Adaboost 算法的关键在于对训练样本进行加权,使得错误分类的样本在下一轮训练中得到更多重视,从而不断改进弱分类器的准确率。
3. 级联分类器级联分类器是Cascadeclassifier的特点之一。
它将多个弱分类器进行级联,当一个样本通过了第一个弱分类器,才会继续传递给下一个弱分类器。
这种级联结构能够在保证高检测率的大大减少了计算量,提高了算法的效率。
三、代码结构1. 源文件组织Cascadeclassifier的源码通常组织如下:- haarcascade_frontalface_alt.xml:前置摄像头人脸检测模型- haarcascade_frontalface_default.xml:默认人脸检测模型- haarcascade_eye.xml:眼部检测模型- haarcascade_upperbody.xml:上半身检测模型- haarcascade_licence_plate_rus_16stages.xml:车牌检测模型- haarcascade_smile.xml:微笑检测模型- haarcascade_fullbody.xml:全身检测模型2. 源码分析Cascadeclassifier的源码通常包括以下几个部分:- 加载模型:通过读取xml文件,加载预训练的级联分类器模型- 图像预处理:对输入图像进行灰度转换、归一化等预处理操作- 特征提取:利用Haar-like特征对图像进行特征提取- Adaboost分类:通过Adaboost算法对特征进行分类,得到分类结果- 级联分类:对多个弱分类器进行级联,得到较为精确的目标检测结果- 检测输出:将检测结果输出到图像上,或者返回目标的位置坐标四、实现细节1. Haar-like特征提取在Cascadeclassifier的源码中,Haar-like特征提取是一个关键的步骤。
Mapinfo,sitsee添加,制作扇区,专题地图
Mapinfo在网络优化中的使用说明目录1.工参文本格式 (1)1.1.工参表格式 (1)1.2.工参表格内容 (1)2.使用sitesee插件 (2)2.1.第一步 (2)2.2.第二步 (2)2.3.第三步 (3)2.4.第四步 (3)2.5.第五步 (4)2.6.第六步 (4)3.导入工参表 (5)3.1.打开工参表 (5)3.2.打使用表格第一行作为标题 (6)3.3.修改字符类型 (6)3.4.完成导入 (7)4.使用Sitesee制作扇区图 (8)4.1.运行sitesee (8)4.2.选择并填入对应值 (9)4.3.运行中 (10)4.4.保存图层 (11)4.5.关闭Mapinfo软件 (12)4.6.打开做好的图层 (12)4.7.显示小区“标示” (12)5.编辑图层 (14)5.1、修改图层的颜色 (14)5.2、按照条件选择小区 (16)5.3、制作专题地图 (18)5.3.1、制作分类专题地图 (18)5.3.2、制作分段专题地图 (20)5.4、图层合并 (26)1.工参文本格式1.1.工参表格式在Mapinfo中使用的工参表可以为EXCEL或TXT格式。
说明Excel必须是2003格式如果为07版office,需要把工参表另存为2003格式,如下图所示:建议:建议使用EXCEL工参表时,最好先把工参信息选择性粘贴到新的表中,因为老表中的单元格可能包含特殊格式或公式,导致Mapinfo无法识别。
1.2.工参表格内容工参表中必须具备经纬度、方位角,其他列都是可有可无。
强调:经纬度、方位角必须为数字格式。
可有通过相加运算验证。
注意:经度<180,纬度<90 方位角的值<360。
2.使用sitesee插件Sitesee是制作扇区图(三叶草)的插件,需先在Mapinfo中导入才能使用。
Sitesee插件只需在Mapinfo中导入一次,之后可以自动加载,但是不能改变Sitesee插件在电脑中的位置,否则会加载失败,需手动再加载一次。
利用CellTool在Mapinfo中制作扇区图
利用CellTool在Mapinfo中制作扇区图福建省邮电规划设计院有限公司F u j i a n P o s t&T e l e c o m P l a n n i n g-D e s i g n i n g I n s t i t u t e C o.,L t d.2009年01月一、所需工具1、Mapinfo 7.0中简体中版2、插件:CellTool工具二、调用CellTool插件:1、将CellTool插件复制到MAPINFO所在目录的TOOLS文件夹中;2、打开MAPINFO软件,工具菜单---工具管理器,在打开的“工具管理器”对话窗中点击“添加工具”按钮;3、在弹出的“添加工具”对话框中,输入工具标题,选择CellTool插件所在位置;4、点击“确定”CellTool插件安装成功;5、这时会在MAPINFO软件菜单栏最后显示“cellmaker”菜单6、“cellmaker”菜单说明Draw sector symbolsdrawvt.画;拖;取出;vi.移动;n.平局;抽签sectorn.部门,部分;防御地段,防区;扇形symbolizevt.用符号表示;作为...象征import perfweb base station fileimportvt./ n.进口,输入[ pl.]进口商品;意义base station基站add latitude and longitudelatituden.纬度longituden.经度add neighborsneighborsa.邻近的;接壤的三、表格格式说明:1、表格中必须有基站名称、小区号、经度、纬度、半功率角、方位角;2、所有基站的小区号必须以统计的格式来表示,如S1、S2、S3或C1、C2、C3等;四、制作过程1、打开EXCEL基站信息表(格式如上如述),将基站信息表另存为TXT格式;2、用MAPINFO打开刚才生成的TXT文件;文件类型:带定界符的ASCII首选视图:无视图3、弹出“带定界符ASCII 信息”窗口;文件字符集选择最后一项,如图示选中复选按钮“以第一行做了列标题”点击“确定”;4、在MAPINFO软件里,选“表---创建点”,弹出“创建点”对话框点击“确定”;5、在MAPINFO软件里,选“cellmaker--- Draw sector symbols”,弹出“选择文件”对话框点击“确定”;5、弹出“sector buider”对话框选择“小区号”为扇区的名称,点击“OK”6、弹出“sector buider”对话框参数说明:get latitude from: 纬度get long litude from: 经度get sector orientation from: 扇区方位角get sector beamwidth from: 扇区波瓣角sector color:扇区颜色sector designator:扇区名称点击“contiune”继续;7、漂亮的扇区图就出来了;。
基于Delphi 7.0和MapObjects 2.3编写控制点管理系统
[ ] 粱水 , 1 李方超 , 赛奎春 .D lh 开发技 术 大全 [ .北 京 e i p M]
Th n r lPo n e ut e Pr g a s d o l h . e Co t o i tEx c i o r m Ba e n De p i7 0 v
() 4 编辑 功能
L"
辑 。需要注意的是 , 点名必须与 sp数据点名完 全一致 。 h
() 3 点之 记 的管理 与维护
() 5 查询 功能 点击 管 理 程 序 中 的 “ 询 ” 输 入控 制 点 点 名 , 查 , 即
点 之记 须 以图 片 的形 式存 在硬 盘 里 , 同时 为 了点 之记 的安全 问题 , 将点 之 记图片进 行加 密处 理 , 存 在 保
观地显示在“ ” , 屏 上 达到 了管理控制点 的 目的。
关键词 : 点之记 ; 实地相 片; 展绘 ; 图表查询
1 引 言
随着 中国经 济 的快 速 发展 , 国城 乡面 貌 发 生 了 中
系统, 既能精准确定该点的存在 与 , 否 又能从宏观上直
观 的掌握 控制 点 的分布情 况 。
能 直观 反 映当前测 区内各控 制点 状态 。
3 系统技术路线 图
针‘ 对以上两种控制点管理方式 的优缺点 , 根据作
业 的 实际情 况 , 天津 市 测 绘 院 开发 了一 套 控制 点 管 理
图 1 管理程序主界面
收稿 日期 :0 l O 1 2 1一1一 8 作者简介 : 吕会义 (9 2 ) 男 , 18 一 , 助理l T程师 , 主要从事: 程测量工作。 亡
2l 0 2年 2月
城
使用Mapinfo的CellMaker插件制作多彩扇区图
使用Mapinfo的CellMaker插件制作多彩扇区图分类:游戏/数码→电脑→电脑软件一.简介在通信设计中,常规制作的基站扇区图往往显得比较单调,并缺乏生动的表现力,今天将介绍如何使用Mapinfo的CellMaker插件制作多彩扇区图。
二.工具/原料1、MapInfo Professional 112、CellMaker(彩色三扇区制作工具)3、XX地市GSM基站图层(三扇区)(含小区名称、选择器、纬度、经度、方位角、半功率角等数据)三.方法/步骤步骤一按照以下格式准备导进Mapinfo图层基础数据,主要字段包括小区名称、选择器、纬度、经度、方位角、半功率角等,特别注意字段的格式,因为字段格式将影响到扇区生成器的数据选择的。
步骤二按数据格式要求,在Mapinfo软件中打开相关的数据源文件,勾中首行数据作为标题行数据,并设置好对应字段的类型。
特别强调:(1)基站名称、小区名称及选择器为字符串类型;(2)纬度和经度为浮点类型;(3)方位角和半功率角为整型,注意如果不是整型数据,如浮点数据,在扇区生成器中将无法选择数据源的。
步骤三导入数据后,创建点图层并进行相关参数设置。
如下图所示:步骤四:双击CellMaker图标,加载插件,并点击“Draw Sector Symbols”打开创建的点图层,并设置“选择器”数据来源字段。
步骤五设置扇区生成器中对应的字段及参数,如纬度、经度、方位角、半功率角、扇区颜色等,特别注意的是,先前数据导入时方位角和半功率角如果不是整型,在扇区生成器中将无法选择数据的。
步骤六使用CellMaker插件制作出来的多彩扇区图层的效果,如下:四.注意事项1、CellMaker插件及数据模板的下载地址:/s/1c0iZTSW2、网讯数据坊:/?v=1五.网讯数据坊网讯数据坊,致力于打造海量的互联网数据信息交流平台,分享知识,分享经验,共同创造更多的财富和价值。
亲,欢迎来到网讯数据坊,这里有海量的专业软件、专业数据及专业数据制作,我们将竭力为您提供优质服务。
maptalks 案例源码
maptalks案例源码以下是一个使用Maptalks创建简单地图的示例代码:import maptalks初始化地图map=maptalks.Map(center=[坐标],zoom=12)添加图层layer=map.add_layer(type="TileLayer",url="h网站n/v3/tiles/map?apikey=YOUR_API_KEY&style=light")添加标记marker=map.add_marker(position=[39.91419,116.41742],title="北京")显示地图map.show()此代码将生成以下地图:该代码的详细说明如下:1.第一行导入Maptalks库。
2.第二行初始化地图,指定中心点和缩放级别。
3.第三行添加图层,指定图层类型和URL。
4.第四行添加标记,指定标记的位置和标题。
5.第五行显示地图。
要创建更复杂的地图,可以使用Maptalks提供的其他功能。
例如,可以添加多个图层、使用图层样式、添加动画效果等。
以下是一个使用Maptalks创建复杂地图的示例代码:import maptalks初始化地图map=maptalks.Map(center=[坐标],zoom=12)添加图层layer1=map.add_layer(type="TileLayer",url="网站/v3/tiles/map?apikey=YOUR_API_KEY&style=light")layer2=map.add_layer(type="TileLayer",url="网站/v3/tiles/water?apikey=YOUR_API_KEY&style=light")添加标记marker1=map.add_marker(position=[3标记],title="北京",icon="marker-red")marker2=map.add_marker(position=[3标记],title="上海",icon="marker-blue")添加动画效果map.add_animation(layer1,{"duration":5000,"type":"scale"})map.add_animation(marker1,{"duration":2000,"type":"move","to":[3标记2]})显示地图map.show()此代码将生成以下地图:该代码的详细说明如下:●第一行导入Maptalks库。
dbscanc语言代码
dbscanc语言代码DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的空间聚类算法,用于将具有一定密度的数据点聚集在一起,同时能够识别出离群点。
本文将对DBSCAN的语言代码进行详细介绍和解释。
DBSCAN算法的实现主要基于以下三个要素:数据集、半径(r)、邻域内最小样本数(minPts)。
其中,半径r用于定义数据点的邻域范围,最小样本数minPts用于判断邻域内是否满足一定密度。
下面是一个使用Python实现的DBSCAN代码示例:```pythondef DBSCAN(data, eps, minPts):cluster_label = 0# 将所有数据点初始化为未访问状态visited = [False] * len(data)# 初始化簇标签,用-1表示噪声点labels = [-1] * len(data)for i in range(len(data)):if visited[i]:continuevisited[i] = True# 获取数据点i的邻域neighbors = get_neighbors(data, i, eps)# 如果邻域内的样本数量小于minPts,则将数据点i标记为噪声点if len(neighbors) < minPts:labels[i] = -1else:cluster_label += 1labels[i] = cluster_labelexpand_cluster(data, labels, visited, neighbors, cluster_label, eps, minPts) return labelsdef expand_cluster(data, labels, visited, neighbors, cluster_label, eps, minPts):for neighbor in neighbors:if not visited[neighbor]:visited[neighbor] = True# 获取邻域的邻居neighbor_neighbors = get_neighbors(data, neighbor, eps)# 如果邻域内的样本数量大于等于minPts,则将其加入到当前簇中 if len(neighbor_neighbors) >= minPts:for n in neighbor_neighbors:if n not in neighbors:neighbors.append(n)# 如果当前点还没有被任何簇标记,则将其标记到当前簇中if labels[neighbor] == -1:labels[neighbor] = cluster_labeldef get_neighbors(data, i, eps):neighbors = []for j in range(len(data)):if i == j:continueif distance(data[i], data[j]) <= eps:neighbors.append(j)return neighborsdef distance(p, q):# 计算两点之间的欧氏距离return ((p[0] - q[0]) ** 2 + (p[1] - q[1]) ** 2) ** 0.5# 测试代码data = [(1, 2), (4, 3), (2, 5), (5, 7), (7, 5), (6, 4), (4, 6), (3, 3), (5, 4), (6, 6)]eps = 2minPts = 3labels = DBSCAN(data, eps, minPts)print(labels)```以上是一个简单的DBSCAN算法实现示例。
kshape的matlab代码
kshape的matlab代码KShape是一种基于时间序列的聚类算法。
在过去的几年中,KShape已经被广泛应用于生物学、金融、计算机网络和机器人等领域。
因此,了解如何使用KShape算法进行时间序列聚类是很重要的。
本文将介绍如何使用Matlab实现KShape算法。
首先,我们来了解一下KShape算法的基本概念。
KShape算法是一种时间序列聚类算法,它是基于距离度量的。
KShape算法的核心思想是将相似的时间序列分为一组,并将它们分为另一组中的不相似序列。
KShape算法的主要步骤包括:1. 初始化:随机选择k个中心点。
2. 计算距离:计算每个点与每个中心点之间的距离。
3. 分配群集:将每个点分配给最近的中心点作为其群集。
4. 更新群集:计算每个群集的中心,并更新中心点的值。
5. 重复步骤2-4,直到满足收敛条件。
下面,我们将介绍如何使用Matlab实现KShape算法。
在Matlab中,我们需要使用“KShape.m”函数来实现KShape算法。
以下是该函数的Matlab代码:```matlab function [IDX, C] = KShape(X, K,varargin) % X:该参数表示要聚类的时间序列矩阵,每行为一个序列。
% K:表示要生成的簇的数量。
%varargin:其他参数。
这里没有任何其他参数,因此可以省略。
max_iter = 100; %最大迭代次数 nrep =5; %重复次数 n = size(X, 1); %样本点数idx = zeros(n, 1); C = zeros(K, size(X, 2));best_val = Inf; %最佳代价函数值 for i =1:nrep % 随机选择K笔数据作为中心点C = X(randperm(n, K), :); pre_idx =ones(n, 1); abs_tol = 10e-6; iter= 0; while sum(pre_idx ~= idx) ~= 0 &&iter < max_iter pre_idx =idx; %计算序列间距离 D =pdist2(X, C, 'euclidean'); %分配簇[~, idx] = min(D, [], 2); %更新簇中心for j = 1:K if sum(idx == j) == 0 continue; endC(j, :) = mean(X(idx == j, :), 1); end iter = iter + 1; end %计算代价函数(代价函数只在最后一次计算) val = 0;for j = 1:K val = val +sum(pdist2(X(idx == j, :), C(j, :), 'euclidean')); end if val < best_valbest_val = val; IDX = idx;end end end ```上述代码中定义了一个函数“KShape.m”,它需要三个参数:要聚类的时间序列矩阵X、要得到的簇的数量K和其他参数。
使用mapbasic画基站扇区
'##############################################################'函数申明Include "MapBasic.def"Global Length as floatGlobal Path as stringDeclare SUB MainDeclare SUB Create_BCCHDeclare SUB Create_900'declare SUB Create_1800Declare SUB Create_SiteNameDeclare SUB Create_CellIDDeclare SUB Create_BCCH_NameCIDeclare Function Alterlon (ByVal 经度 as string,ByVal 纬度 as string,ByVal 方向角 as string,ByVal 定位长度 as string,ByValFileName as string) as integer'##############################################################'########################### MAIN程序#############################'##############################################################SUB MainLength=0.0025 '控制总体大小Path="D:\2"Call Create_900' Call Create_BCCH' Call Create_SiteName' Call Create_CellIDEND SUB'##############################################################'########################画基站 GSM900的扇区子程序#######################'##############################################################SUB Create_900Dim x0,y0,x1,y1,x2,y2 as floatDim ABC as ObjectDim ABC1 as ObjectDim i as IntegerDim MyRow as IntegerDim Length1 as FloatDim Row as IntegerDim Freq as StringDim Sitestytle as IntegerDim BSC as StringDim SiteStyle as IntegerDim BCCH as StringDim SiteName as StringDim CellID as StringDim FillBrush as BrushDim BSCwang as StringDim RowPi as FloatDim ObjCellID as ObjectMyRow=1Open Table Path+"\Rio2" As RFinfo1 Interactive'打开基站信息表Create Map For RFinfo1 ' 'select * from rfinfo where RFinfo.BSC网类="GSM900" into rfinfo1Create Table RF2 (NNN integer) File Path+"\Temp"Create Map For RF2Fetch First From RFinfo1 ‘设置一个表的光标位置(即哪一行是当前行)Do While Not EOT(RFinfo1)FillBrush=MakeBrush(2, white, Blue) ‘返回填充图案值Length1=Length ‘Length=0.0025 '控制总体大小Set Style Pen MakePen(1, 2, Black)‘返回一线型值,Pen为图形对象指定一种线型Row=RFinfo1.AzimuthX0=RFinfo1.LonY0=tX1=X0+Cos(3.14/4)*Length1Y1=Y0+Sin(3.14/4)*Length1X2=X0+Cos(3.14/4+3.14)*Length1Y2=Y0+Sin(3.14/4+3.14)*Length1‘定位扇形的三个点坐标'BCCH=RFinfo1.BCCHSiteName=RFinfo1.CellNameCellID=RFinfo1.CI'BSCwang=RFinfo1.BSCSitestytle=1'画定向天线的方向角Create Arc Into Variable ABC ( X1 , Y1 ) ( X2 , Y2 ) (60-Row) (120-Row) Pen(6, 2, Red)ABC=ConvertToRegion ( ABC )‘=ConvertToRegion ( ABC )返回一个形状近似于某个对象的区域对象Alter Object ABC Info OBJ_INFO_BRUSH, FillBrush Node Add ( X0, Y0 )Update RFinfo1 Set Obj = ABC Where RowID= MyRow''' row=90-row' rowpi=(row/180)*3.14'' length1=length'' if row=0 or row=-90 or row=-270 or row=-180 then' length1=length*1.1' end if'' y2=y0+length1*sin(rowpi)' x2=x0+length1*cos(rowpi)''写字Insert Into RF2 select SiteName from RFinfo1Create Text Into Variable ObjCellID SiteName (x2 , y2) ((x2+length1) , (y2+length1))Update RF2 Set Obj=ObjCellID Where RowID=MyRow' insert into drawbcch values(x0,y0,bcch,row,sitestyle) ' insert into drawsitenamevalues(sitename,x0,y0,cellid,row,sitestyle)' Insert Into RF2 (Object) values(ObjCellID )MyRow=MyRow+1Note MyRowFetch Next From RFinfo1LoopCommit Table RFinfo1Map From RFinfo1END SUB'###########################################################'改变经纬度Function alterlon (ByVal 经度 as string,ByVal 纬度 as string,ByVal 方向角 as string,ByVal 定位长度 as string,ByVal filename as string) as integerdim x0,y0,x2,y2 as floatdim drawobj as objectdim myrow as integerdim length1 as floatdim row as integerdim rowpi as floatdim bcch as stringmyrow=1open table path+"\"+filename as filename1fetch first from filename1do while not EOT(filename1)length1=val(定位长度) '频点位置X0=val(经度)Y0=val(纬度)if filename="drawbcch" thenrow=90-val(方向角)rowpi=(row/180)*3.14if row=0 or row=-90 or row=-270 or row=-180 then length1=length1*1.1end ify2=y0+length1*sin(rowpi)x2=x0+length1*cos(rowpi)elserow=val(方向角)y2=y0-length1*sin((row/180)*3.14)x2=x0+length1*cos((row/180)*3.14)end ifCreate Point Into Variable drawobj (X2 ,Y2) Symbol(22,white,1)update filename1 set 经度=x2 where rowid=myrowupdate filename1 set 纬度=y2 where rowid=myrowupdate filename1 set obj=objbcch where rowid=myrowMyRow=MyRow+1fetch next from filename1Loopcommit table filename1Add Map Auto Layer filename1alterlon=1end function'###########################################################'画各扇区频点,基站名字,基站cellidsub create_bcch_namecidim drawlength as floatdim return as integer'画基站频点'open table path+"\drawbcch" as filenamedrawlength=lengthreturn=alterlon("drawbcch.jindubcch","drawbcch.weidubcch","drawbcch.f angxiangjiaobcch",drawlength,"drawbcch")'画基站名字'open table path+"\drawsitename" as filenamedrawlength=length*0.3return=alterlon("drawsitename.jindusitename","drawsitename.weidusiten ame",10,drawlength,"drawsitename")'画基站cellid'open table path+"\drawcellid" as filenamedrawlength=length*0.3return=alterlon("drawcellid.jinducellid","drawcellid.weiducellid",50, drawlength,"drawcellid")end sub'########################################################### '??????sub create_bcchdim x0,y0,x2,y2 as floatdim objbcch as objectdim i as integerdim myrow as integerdim length1 as floatdim row as integerdim rowpi as floatdim bcch as stringlength=length*0.7myrow=1open table path+"\drawbcch" as drawbcchfetch first from drawbcchdo while not EOT(drawbcch)' if drawbcch.bscwangxing="DCS1800" then'??1800?900????' length1=length*0.5' elselength1=length' end ifX0=drawbcch.jindubcchY0=drawbcch.weidubcchrow=90-val(drawbcch.fangxiangjiaobcch)rowpi=(row/180)*3.14if row=0 or row=-90 or row=-270 or row=-180 then length1=length1*1.1end ify2=y0+length1*sin(rowpi)x2=x0+length1*cos(rowpi)Create Point Into Variable objbcch (X2 ,Y2) Symbol(22,white,1)update drawbcch set jindubcch=x2 where rowid=myrow update drawbcch set weidubcch=y2 where rowid=myrow update drawbcch set obj=objbcch where rowid=myrow MyRow=MyRow+1fetch next from drawbcchLoopcommit table drawbcchAdd Map Auto Layer drawbcchbrowse * from drawbcchend sub'###########################################################'??????sub Create_SiteNamedim x0,y0,x1,y1,x2,y2 as floatdim objsitename as objectdim i as integerdim myrow as integerdim length1 as floatdim row as integerdim rowpi as floatdim bsc as stringdim sitestyle as stringdim bcch as stringdim sitename as stringdim cellid as stringdim ci as integermyrow=1open table path+"\drawsitename" as drawsitenamefetch first from drawsitenamedo while not EOT(drawsitename)length1=length*0.3 '???X0=drawsitename.jindusitenameY0=drawsitename.weidusitenamesitestyle=drawsitename.zhanxingsitenamecellid=drawsitename.cisitenamesitename=drawsitename.sitenamesitenameci=val(left$(cellid, 1))y1=y0-length1*sin((10/180)*3.14) '10 ???????x1=x0+length1*cos((10/180)*3.14)'y2=y0-length2*sin((10/180)*3.14)'x2=x0+length2*cos((10/180)*3.14)if ci=1 thenCreate Point Into Variable objsitename (X1 ,Y1) Symbol(22,white,1)update drawsitename set jindusitename=x1 where rowid=myrowupdate drawsitename set weidusitename=y1 where rowid=myrowupdate drawsitename set obj=objsitename where rowid=myrowend ifMyRow=MyRow+1fetch next from drawsitenameLoopcommit table drawsitenameAdd Map Auto Layer drawsitenamebrowse * from drawsitenameend sub'###########################################################'????cellidsub Create_CellIDdim x0,y0,x1,y1,x2,y2 as floatdim objcellid as objectdim i as integerdim myrow as integerdim length1 as floatdim row as integerdim rowpi as floatdim bsc as stringdim sitestyle as stringdim bcch as stringdim sitename as stringdim cellid as stringdim ci as integermyrow=1open table path+"\drawcellid" as drawcellidfetch first from drawcelliddo while not EOT(drawcellid)length1=length*0.3 '??X0=drawcellid.jinducellidY0=drawcellid.weiducellidsitestyle=drawcellid.zhanxingcellidcellid=drawcellid.cicellidsitename=drawcellid.sitenamecellidci=val(left$(cellid, 1))y1=y0-length1*sin((50/180)*3.14) '50 ??????? x1=x0+length1*cos((50/180)*3.14)'y2=y0-length2*sin((40/180)*3.14)'x2=x0+length2*cos((10/180)*3.14)if ci=1 thenCreate Point Into Variable objcellid (X1 ,Y1) Symbol(22,white,1)update drawcellid set jinducellid=x1 where rowid=myrowupdate drawcellid set weiducellid=y1 where rowid=myrowupdate drawcellid set obj=objcellid where rowid=myrowend ifMyRow=MyRow+1fetch next from drawcellidLoopcommit table drawcellidAdd Map Auto Layer drawcellidbrowse * from drawcellidend sub。
mapinfo画扇形
mapinfo中绘制基站扇形的算法讨论和工具共享【资料名称】:mapinfo中绘制基站扇形的算法讨论和工具共享【资料作者】:YZL【资料日期】:2009.01【资料语言】:中文【资料格式】:其它【资料目录和简介】:mapinfo中绘制基站扇形的算法讨论和工具共享. 讨论5种算法并将我以前弄的一个工具贡献给大家试试----------------------讨论和说明-----------------------------很多同仁在论坛中谈论也自己编程做了一些基站扇区(扇形、直线)图形绘制工具,包括很多规划软件都有一个问题就是生成的扇形图形在mapinfo等gis系统中有一定失真。
当然由网友说这点失真可能不算啥了,如果是这样你就不必看下面的方法了。
下面以MAGPINFO为例来说明,MAPINFO采用的WGS-84椭球体坐标系,而我们日常一般习惯于在笛卡尔坐标系中处理,这也是处理容易失真原因我总结了一下,很多人在编制mapinfo下生成扇形图形的时候有如下做法:方法1:(极端做法):直接将直角坐标用于计算,如: x=r*cos(theta) ,y=r*sin(theta) 这种做法完全将一个地球球体表面当成平面来处理,这种做法失真最大(当然如果地表面积足够小的时候误差也不是很明显)。
这种做法论坛里很多 excel2ge/excel2mapinfo都是这种方法。
我个人认为此方法不可取。
方法2:采用直角坐标到经纬度的近似转换关系计算,这种算法采用经纬度和直角坐标之间的简单关系【/ (69.093 * 1609) 】。
如网上的“[vb+Mapx]实现扇区三叶草图形" ,大家可以搜索学习一下。
这种算法个人感觉也不够精确。
方法3:采用大地主题解算算法来实现。
这种算法需要很多专业知识背景(我就是猛学了一段时间的测量专业的教材才理解的)。
大地主题解算有很多算法,我采用了白赛尔算法实现,具体算法我已经放到了上帝之眼上,大家有兴趣可以自行看看:/showtopic-248479.aspx。
几种mapinfo插件的使用
MAPINFO介绍错误!未定义书签。
●主界面错误!未定义书签。
●图层控制错误!未定义书签。
●创建点错误!未定义书签。
●创建专题地图错误!未定义书签。
几种插件的使用方法错误!未定义书签。
●载入插件错误!未定义书签。
●Piano的使用方法错误!未定义书签。
●MIPT的使用方法错误!未定义书签。
●Easywork的使用方法错误!未定义书签。
●利用插件对NEMO和TEMS路测文件进行拉线分析错误!未定义书签。
几种MAPINFO插件的使用MAPINFO是一种广泛使用的绘图和地理分析软件,可实现多种复杂的地理分析功能,在GSM网络优化中也可利用其进行CM和PM数据分析。
下面对MAPINFO的基本使用方法和几种常见插件进行简单的探讨。
MAPINFO介绍●主界面:主要包括主要工具栏、绘图工具栏、常用工具栏和插件工具栏(如Piano_30工具等)在主界面左下角显示当前状态:可以根据情况调整为光标位置,地图比例和缩放(窗口宽度)另外可以选定图层进行信息编辑,在图一中该处显示为“无”,则绘图工具栏内图标均显示为灰色,无法进行编辑;选定SITE_070119层后图标显示为黑色,可以进行编辑:●图层控制:我们常用的PIANO层中包括小区的信息有CI,LAC,BSC,BCCH…等,通过图层控制我们可以方便改变小区的标注,右键点击后会弹出一菜单,选择图层控制后出现对话窗口:点击标注按钮出现下面窗口:有时候我们会发现图中的一些小区无标注,可能是由于重名或名字重叠导致无法显示,这时候我们可以将“允许文本重复”和“允许文本重叠”选中,就可以看到标注项的内容。
点击上图红圈所示的样式图标,出现如下“文本样式”窗体:在此可对标注项进行编辑。
另外,按照以下步骤可对图形的显示属性进行编辑:●创建点:有时候会需要对大批的地理坐标导入电子地图,这里就可以使用MAPINFO的创建点来实现。
首先在EXCEL表格里面录入需要显示地点的名字,经纬度然后在MAPINFO打开文件,打开文件类型选择*.xls导入到MAPINFO后如图:之后就可以创建点了:点击创建点弹出窗口:可以看到创建点的信息来自与我们导入的“新建_Microsoft_Excel_工作表”点击使用符号右边按钮,可以调整创建点的显示属性取得X、Y坐标的列应和经度、纬度所在列对应确定后就在电子地图上生成了我们所要的点●创建专题地图:通过创建专题地图我们可以对地图数据进行分析和显示,下面以建立小区LAC 视图为例进行说明:步骤1:选择专题地图类型,对于LAC我们选择为独立值步骤二:选择相应的表及字段,这里选择site_070119中的LAC字段步骤三:确定不同LAC的显示属性,通过点击样式我们可以调整不同LAC显示为不同颜色:以下为按LAC进行专题划分后的电子地图显示:几种插件的使用方法●载入插件:使用插件之前首先要载入,方法如下:如果只是临时使用,以后不常用,可直接打开*.MBX文件,或从“工具->运行MapBasic程序打开”,如果是经常使用,可从“工具—>工具管理器”中点击增加工具来载入,方法如下:如上图示,在增加工具窗口中,标题可自定义工具名称,位置可通过框右侧如红圈示浏览按钮选择,然后点击确定。
mapinfo三扇区制作步骤
1 概述Mapinfo是一款强大工程制图软件,在网络优化中,是一个非常得力助手,下面简单的叙述一下Mapinfo制作三扇区图的过程。
2 制作工程2.1 Mapinfo基站工参的制作在制作地图前,先要制作txt格式的基站工参,下面以百色为例,完成一个MOTO、新华为、老华为基站的分布图。
一、将已有的Excel表格按需要配置成TxT格式文本如下图:(红色框就是我们用来区别基站类型的标识)二、完成基站信息配置后,需要另存为TXT格式的文本文档:(本机使用的Office 2007)三、到这里就完成了Mapinfo基站工参制作。
2.2 使用插件为sitesee这里介绍使用sitesee插件,实现三扇区基站的功能,关键是设置“波瓣宽度”。
一、运行MAPINFO软件,导入基站工参或者导入插件,无顺序要求。
这里我们先导入基站工参。
二、设置属性,勾选“use first line for column titles”字体的设置设置为不用转换,并采用第一行作为列标题。
点击OK后即成功导入表。
三、导入插件,在TOOLS里选择“Run mapbasic program”出现下图对话框,选择sitesee插件,确定。
四、点击T able—WFI SiteSee—Create Site Boundaries,出现对话框进行设置:五、地图导入。
成了扇区的制作后,我们需要导入地图。
在“file——open”打开对话框:浏览到我们做好的地图信息,可以按“ctrl+a”全部选择。
完成地图导入后,扇区图和地图的层次关系不同,需要重新导入扇区图,操作步骤相同,在“flie——open”,浏览到我们存储刚刚做好的基站图:六、完成基站和地图的导入后,显示基站名,在图上右键点击,选择“layer control”进行相应的选取。
七、制作专属地图。
在“Map——create thematic map”点击“NEXT”进入下一步设置:这里的“配置”,就是我们用来区分MOTO、老华为和新建站基站添加的一项属性,通过styles设置颜色,区分基站。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Create Menu "CELL工具" As
"导入excel表" Calling 导入程序
Alter Menu Bar Add "CELL工具"
End Sub
Sub 导入程序
Dim sxls,stab,基站类型,是否室内外 as String
Dim i,j As Integer
Else
getArcENDX=0
End If
End Function
Function getArcENDY(byval obj as object) as float
If objectinfo(obj,OBJ_INFO_TYPE )=1 then
'此处的方向角是经过处理后的方向角
Create Arc into Variable arc_obj (minx,miny) (maxx,maxy) start_angle end_angle
dim xx1,yy1,xx2,yy2 as float
Exit sub
End If
Register Table sxls TYPE XLS Titles Range "工参" Into stab
Open Table stab as ~xls
Create Map For ~xls
i=1
j=TableInfo(~xls,TAB_INFO_NROWS)'表的行数
End If
End Function
End If
stab=PathToFileName$(sxls)
stab=left$(stab,len(stab)-4)&"TAB"
stab=FileSaveAsDlg(PathToDirectory$(sxls),stab,"TAB","保存文件为")
If stab="" Then
Do
Fetch Rec i From ~xls
经度 = ~xls.col(8)
纬度 = ~xls.col(9)
方向角=~xls.col(10)
是否室内外=~xls.col(14)
基站类型=~xls.col(15)
If 基站类型="DCS1800" Then
miny=ObjectGeography(circle_obj,obj_geo_miny)
maxx=ObjectGeography(circle_obj,obj_geo_maxx)
maxy=ObjectGeography(circle_obj,obj_geo_maxy) '这四行取得绘制圆弧的关键点坐标,
Update ~xls Set obj=cir Where RowID=i '更新设置表的obj列,也就是图形列
i=i+1
Loop Until i=j+1
Map From ~xls
Commit Table ~xls
Set Map
Center (经度, 纬度)
zoom 12 units "km"
Dim 经度,纬度,方向角,半功率角,半径 As Float
Dim cir As Object
Dim un_select_style As Brush
Close All
sxls=FileOpenDlg("","","xls","请选择导入文件")
If sxls="" Then
Exit Sub
dim d as object
d=ConvertToPline( obj )
getArcENDY =ObjectNodeY( d , 1 , objectinfo(d,OBJ_INFO_NPNTS))
Else
getArcENDY=0
un_select_style = MakeBrush(61,YELLOW,YELLOW)'创建一个颜色刷子,用来填充区域
End If
If 是否室内外="是" Then
cir=CreateCircle(经度,纬度,0.01)
cir=ConvertToRegion(cir)
getArcBEGY =ObjectNodeY( d , 1 , 1)
Else
getArcBEGY=0
End If
End Function
Function getArcENDX(byval obj as object) as float
dim d as object
d=ConvertToPline( obj )
getArcBEGX =ObjectNodeX( d , 1 , 1)
Else
getArcBEGX=0
End If
Display position
CoordSys earth
End Sub
Function mycreateregion(经度,纬度,方向角,半功率角,半径 as float) as Object
dim x,y,r,x1,y1,x2,y2,start_angle,end_angle as float
Include "mapbasic.def"
Declare sub Main
Declare sub 导入程序
Declare Function mycreateregion(经度,纬度,方向角,半功率角,半径 as float) as Object
Declare Function getArcBEGX(ByVal obj as Object) as Float
End If
If 是否室内外="否" Then
cir=mycreateregion(经度,纬度,方向角,半功率角,半径)
cir=ConvertToRegion(cir)
End If
Alter Object cir Info OBJ_INFO_BRUSH,un_select_style '把颜色搞上去
Create Line into Variable line1_obj (x,y) (xx1,yy1)
Create Line into Variable line2_obj (x,y) (xx2,yy2) '这里是绘制两条直线
obj1 =ConvertToRegion(Combine(arc_obj,Combine(line1_obj,line2_obj))) '合并
End Function
Function getArcBEGY(byval obj as object) as float
If objectinfo(obj,OBJ_INFO_TYPE )=1 then
dim d as object
d=ConvertToPline( obj )
X=经度
Y=纬度
r=半径
方向角=90-方向角
start_angle=方向角-半功率角/2
end_angle=半功率角/2+方向角
circle_obj=CreateCircle(x,y,r) '这里绘制辅助圆,
minx=ObjectGeography(circle_obj,obj_geo_minx)
xx1=getArcBEGX(arc_obj)
yy1=getArcBEGY(arc_obj)
xx2= getArcENDX(arc_obj)
yy2= getArcENDY(arc_obj) '这里是取得圆弧的端点坐标
If objectinfo(obj,OBJ_INFO_TYPE )=1 then
dim d as object
d=ConvertToPline( obj )
getArcENDX =ObjectNodeX( d , 1 , objectinfo(d,OBJ_INFO_NPNTS))
Declare Function getArcBEGY(ByVal obj as Object) as Float
Declare Function getArcENDX(ByVal obj as Object) as Float
Declare Function getArcENDY(ByVal obj as Object) as Float
mycreateregion=obj1 '返回扇形。
End Function
''''求圆弧端点的程序''''''''''''''''''
Function getArcBEGX(byval obj as object) as float
If objectinfo(obj,OBJ_INFO_TYPE )=1 then
半功率角 = 20
半径=0.08
un_select_style = MakeBrush(61,GREEN,GREEN)'创建一个颜色刷子,用来填充区域
End If
பைடு நூலகம்
If 基站类型="GSM900" Then
半功率角 = 45
半径=0.04