MapX常见问题解答.docx
- 文档编号:26493873
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:12
- 大小:24.55KB
MapX常见问题解答.docx
《MapX常见问题解答.docx》由会员分享,可在线阅读,更多相关《MapX常见问题解答.docx(12页珍藏版)》请在冰豆网上搜索。
MapX常见问题解答
MapX常见问题解答
(1)
时间:
2005-1-711:
12:
18作者:
MICROGERM点击:
69评论
在阅读以下资料之前,请仔细查看本站资料使用条款及版权申明,如果您不接受本站相关条款申明,请离开本页面。
MapX常见问题解答
1.对栅格图象的支持。
在mapx3.0中对对栅格图象的支持很弱。
在mapx4.0中对对栅格图象的支持得到增强。
支持BMP,GIF,TIF,JPG,PSD,PNG,MrSIDfileformat(*.sid),网格文件(*.mig)等。
但是需要将这些格式的文件现存成*.TAB才可以调用。
3.关于Infotip–信息提示。
1.由Map1.InfotipSupport=True设置使能Infotip.
2.由Map1.InfotipPopupDelay=500(millisecond)设置延迟时间。
3.由LabelProperties.DataField来设置用做InfoTip的字段
4.如何在MapX下读取属性值。
有三种方法:
1.由Layer对象的KeyField属性来设立要读取属性值的字段名。
接着,由Feature对象的keyValue读取此行的属性值。
2.将图层加入到Datasets, 由Dataset对象的Value(x,y)属性,通过设置行号,列号来获得属性值。
3.将图层加入到Datasets,之后由RowValues(ftr)获取整行的值。
DimdsAsMapXLib.Dataset,lyrAsMapXLib.layer
DimftrsAsFeatures
DimftrAsFeature
DimrvAsRowValue
DimrvsAsRowValues
DimDsNameAsString ‘数据集名
DimDsRowsAsLong,DsColsAsLong
DimiAsLong,jAsLong
Setds=Formmain.Map1.Datasets.Item(DsName)
Setlyr=ds.layer
Setftrs=lyr.AllFeatures
DsCols=ds.Fields.Count
DsCols=DsCols+1
DsRows=ftrs.Count
Grid1.Rows=DsRows+1
Grid1.Cols=DsCols
Grid1.Row=0
Fori=0ToDsCols-1
Grid1.Col=i
Grid1.Text=ds.Fields.Item(i+1).Name
Nexti
Grid1.Col=DsCols-1
Grid1.Text="Fkey"
lyr.BeginAccessmiAccessRead
i=1
ForEachftrInftrs
Setrvs=ds.RowValues(ftr)
j=0
ForEachrvInrvs
IfNotIsNull(rv.Value)ThenGrid1.TextArray(i*DsCols+j)=Trim(rv.Value)
j=j+1
Next
Grid1.TextArray(i*DsCols+j)=ftr.FeatureKey
i=i+1
Next
lyr.EndAccessmiAccessEnd
Setftr=Nothing
Setftrs=Nothing
Setds=Nothing
Setrv=Nothing
Setrvs=Nothing
Setlyr=Nothing
注意:
BeginAccess,以及EndAccess可以明显的提高属性读取的速度。
5.关于查找
两种方式:
1.使用Find对象的Search方法。
在mapx3.5中只能作到完全匹配查找,在MapX4.0中SearchEx方法则可以找到多个匹配的记录,其结果由FindResult.Matches获取。
详细请参看有关Find.SearchEx方法的文档以及示例。
2.使用Layer对象的OBJECT.Search(strWhere)方法。
其参数为SQL查询的WHERE子句。
例如:
Setftrs=lyr.Search("Character_Namelike""%市"""
;模糊查询
Setftrs=lyr.Search("Character_Name=""北京市"""
;
Setftrs=lyrUSA.Search("TOTPOP>1000000"
注意:
1。
字符串外加两个双引号。
2。
首先将图层加入数据集Datasets才能使用查询。
6.自定义范围专题图
DimdsAsNewMapXLib.Dataset
DimthmAsNewMapXLib.Theme
Setds=Formmain.Map1.Datasets(ToolBars.Combo2.Text)
Setthm=ds.Themes.add(0,"aa","aa",False)
thm.Legend.Compact=False
thm.AutoRecompute=False
'thm.ComputeTheme=False
thm.DataMax=700
thm.DataMin=100
thm.ThemeProperties.AllowEmptyRanges=True
thm.ThemeProperties.NumRanges=7
thm.ThemeProperties.DistMethod=miCustomRanges
thm.ThemeProperties.RangeCategories
(1).Max=150
thm.ThemeProperties.RangeCategories
(1).Min=50
thm.ThemeProperties.RangeCategories
(2).Max=250
thm.ThemeProperties.RangeCategories
(2).Min=150
thm.ThemeProperties.RangeCategories(3).Max=350
thm.ThemeProperties.RangeCategories(3).Min=250
thm.ThemeProperties.RangeCategories(4).Max=450
thm.ThemeProperties.RangeCategories(4).Min=350
thm.ThemeProperties.RangeCategories(5).Max=550
thm.ThemeProperties.RangeCategories(5).Min=450
thm.ThemeProperties.RangeCategories(6).Max=650
thm.ThemeProperties.RangeCategories(6).Min=550
thm.ThemeProperties.RangeCategories(7).Max=750
thm.ThemeProperties.RangeCategories(7).Min=650
'thm.ComputeTheme=True
thm.AutoRecompute=True
thm.Visible=True
7.用MapX输出表格
用mapx直接输出图象是可以的,但是输出数据,可以有以下两种方式:
1。
输出为文本文件,然后由VB读取
2。
转换为VB中的groud
8.mapxtreme2.0forNT下,非地球坐标系出现的问题
假设line.tab地图的投影为非地球坐标系,单位为米,边界为(-40,030.15474,-10,007.53869)(40,030.15474,10,007.53869)。
(1)对地图的处理。
a.文件/另存为,在弹出的另存为对话框上点击投影按钮,确认,弹出边界对话框,将原来的边界值乘以1.609再添入,即–40030.15474*1.609=-64408.51898。
四个边界值作同样处理。
b.输入文件名如linenew.tab,确认.
(2)在geosetmanager中调入文件linenew.tab.设置其视野范围。
如果实际设置为0到0.19,则输入到对话框中时为0到0.19*1.609.但在设置zoom(视野值)时的范围仍为0-0.19.
9.如何实现测距
a.//创建测距工具
globalconstcalculatedistance=1
PrivateSubForm_Load()
map1.CreateCustomTool(calcilatedistance,miToolTypepoly,microsscursor)
EndSub
PrivateSubDistances_Click()
map1.currenttool=calculatetool
EndSub
b.//在mapx的PolyToolUsed事件中,
用Distance(x1,y1,x2,y2)计算距离,由状态条中或label显示。
PrivateSubMap1_PolyToolUsed(ByValToolNumAsInteger,ByValFlagsAsLong,ByValpointsAsObject,ByValbShiftAsBoolean,ByValbCtrlAsBoolean,EnableDefaultAsBoolean)
DimDisSumAsDouble
DimDisAsDouble
DimnAsInteger
DimptsAsNewMapXLib.points
Dimx1AsDouble,y1AsDouble,x2AsDouble,y2AsDouble
Setpts=points
DisSum=0
MDIForm1.StatusBar1.Panels.Item(3).Text=Format(Str(DisSum),"#,##0.000000")
SelectCaseFlags
CasemiPolyToolBegin
CasemiPolyToolInProgress
IfToolNum=CalculateDistanceThen
Fori=1Topts.Count-1
x1=pts.Item(i).X
y1=pts.Item(i).Y
x2=pts.Item(i+1).X
y3=pts.Item(i+1).Y
Dis=Map1.Distance(x1,y1,x2,y2)
DisSum=DisSum+Dis
MDIForm1.StatusBar1.Panels.Item(3).Text=Format(Str(DisSum),"#,##0.000000")
Nexti
EndIf
CasemiPolyToolEnd
EndSelect
10.printmap方法中w,h,x,y的单位:
himetricunit代表什么意思
在mapx的printmap方法:
PrintMap(hDCx,y,w,h)之中,w,h,x,y的单位为himetric,1himetric=0.01毫米。
所以,
PrivateSubCommand4_Click()
ScaleMode=6 `设成毫米坐标系。
Printer.CurrentX=0
Printer.CurrentY=0
Printer.Print""
Map1.PrintMapPrinter.hDC,0,0,Map1.Width*100,Map1.Height*100 ‘1毫米=100himetric
Printer.NewPage`Sendnewpage.
Printer.EndDoc `Printingisfinished.
ExitSub
11.关于UserDrawLayer.
UserDrawLayer允许用户画自定义格式的图形。
如用户自定义的比例尺,图例,或标注。
改变时,使用Refresh刷新
12.使用MapX40时如果遇到以下的问题:
1.在GeoSetManager中加入表时,会产生错误如“The.indalreadyrigistered”
2.当把在Pro中建立的表加入到GeoSetManager中时,会出现异常退出。
3.当用MapX40创建临时图层出现汉字问题。
4.当文本旋转出现问题。
解决方法:
升级到Mapx4.01.51(中文版)
13.mapx3.5下,非地球坐标系出现的问题。
1。
定义图层的视野范围时,因为系统默认单位为英里。
所以如果拥护定义单位为米,视野范围定为0-500。
因为1英里=1609米,那么,
layer.ZoomMin=0
layer.ZoomMax=500*1609
layer.Zoom值的设置仍在0-500之间。
MapX4.0已经解决该问题。
2.在投影为非地球坐标系的图层上编辑时,如增加图元,要首先设置一下坐标系的范围即CoordSys.Bounds。
程序如下:
坐标系的单位为毫米:
DimcsysAsNewMapXLib.CoordSys
csys.Set0,,5,,,,,,,,,,Formmain.Map1.Layers.Bounds
SetFormmain.Map1.NumericCoordSys=csys
14.连接Oracle8I,若数据分存在两个表中,可用以下语句来实现连接:
注意:
在Select选择语句中要写上需要的字段。
DimLayerInfoObjectAsNewLayerInfo
Dimi,jAsInteger
LayerInfoObject.Type=miLayerInfoTypeServer
LayerInfoObject.AddParameter"name","cancaps"
LayerInfoObject.AddParameter"ConnectString","SRVR=SUPERIOR;UID=mipro;PWD=mipro"
LayerInfoObject.AddParameter"Query","select""CITY_125"".""TOT_POP"",""STATES"".*from""MIPRO"".""STATES"",""MIPRO"".""CITY_125""where
""CITY_125"".""STATE""=""STATES"".""STATE"""
LayerInfoObject.AddParameter"toolkit","ORAINET"
LayerInfoObject.AddParameter"AutoCreateDataset",1
LayerInfoObject.AddParameter"DatasetName","Uscty"
Map1.Layers.AddLayerInfoObject
j=Map1.Datasets.Item
(1).Fields.Count
MsgBoxStr(j)
Fori=1Toj
MsgBoxMap1.Datasets.Item
(1).Fields.Item(i).Name
Next
Map1.Datasets.Item
(1).Themes.AddmiThemeRanged,"TOT_POP"
15.连接远程数据库时日期作为选择条件时:
对于Acess数据库,日期要用#作为边界,例如:
#2/2/2000#
s1="02/04/200001:
00:
40"
s="select*fromdb1wheredt=#"+s1+"#"
Setds=db.OpenRecordset(s)
对于Sybase数据库,如下:
dimd_begin,d_endasstring
d_begin=20000101
d_end=20000212
selectSTCD,YMDHM,DYRNFromST_RNFL_RWhereYMDHM>='"+d_begin+"'"
16.ACESS数据库存在点位数据,在PRO中地图化后,生成TAB表,加入MAPX,能否当数据库数据增加后反映到地图点位的刷新。
1。
不要使用在PRO中下载的表文件,而使用Layerinfo对象的miLayerInfoTypeServer为数据创建点位。
程序如下:
PrivateSubLinkODBC_Click()
DimLayerInfoAsNewMapXLib.LayerInfo
LayerInfo.Type=miLayerInfoTypeServer
LayerInfo.AddParameter"name",“ODBCLayer”
’Mapstats为Mapstats.mdb的ODBC数据源
LayerInfo.AddParameter”connectstring",“Mapstats”
LayerInfo.AddParameter"query",”Select*fromUs_cust”
LayerInfo.AddParameter"cache",“on”
LayerInfo.AddParameter"MBRSearch",“on”
LayerInfo.AddParameter"toolkit","ODBC"
layerinfo.AddParameter"AutoCreateDataset",1
layerinfo.AddParameter"datasetname",“us_cust”
Setlyr=Formmain.Map1.Layers.Add(LayerInfo,1)
EndSub
要求:
mapstats的数据已经地图化,并加入DATASETS。
2。
当数据库数据改变(增加,删除),使用Dataset的refresh方法完成点位的刷新。
17.使用ADO,RDO,BDE数据源进行数据绑定时,会出现没有注册的错误提示。
在安装MapX选择component/datadrivers/ADOdatadriver等数据源驱动程序。
18.使用MAPXTREME开发,查找的结果如何高亮显示。
程序如下:
sublocateobj()
dimk,lay
dimlayer,findds,foundobj,bResult
k=trim(session("key")) ‘session("key")为要查的ID
lay=session("layer") 'session("layer")为当前层
setlayer=Session(SESN_MAPPER).Layers(lay)
setfindds=Session(SESN_MAPPER).DataSets.Add(6,layer)
setlayer.find.finddataset=findds
setlayer.find.findfield=findds.fields("ID")
setfoundobj=layer.find.search(k)
if(foundobj.findRCmod10=1)then
bResult=SetMapAutoRedraw(False)
ifSession(SESN_MAPNAME)="hb"then
Session(SESN_MAPPER).zoom=20
else
Session(SESN_MAPPER).zoom=1
endif
Session(SESN_MAPPER).centerX=foundobj.centerX
Session(SESN_MAPPER).centerY=foundobj.centerY ‘可将foundobj定位在中心
layer.Selection.addfoundobj'着亮显示
Session(SE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MapX 常见问题 解答
![提示](https://static.bdocx.com/images/bang_tan.gif)