请问什么是比例尺,怎样知道mapx地图的比例尺?(89分)

  • 主题发起人 主题发起人 大唐电信
  • 开始时间 开始时间

大唐电信

Unregistered / Unconfirmed
GUEST, unregistred user!
我想比例尺应该不是单纯的地图上1厘米代表实际地理上多少米,因为地图是可以变大和变小的啊,这样地图上的1厘米代表的实际地理上的米数肯定是变化的,我想比例尺应该不是这个意思,请各位高手帮我解答上面的疑问?
谢谢!!!
 
比例尺在纸质地图上肯定是固定的,而在电子地图上,因为可以任意缩放,所以其比例尺是动态的,在CAD或GIS上,这个东东叫比例因子,每执行一次缩放操作,比例因子就随之改变。
比例因子是包含在制图算法内的,是制图算法的一个参数。
如果你用的是矩阵算法,那么它就是矩阵内的一个元。
如果你用的是常规表达式算法,那么它就是表达式中的一个变量。

有机会找本计算机图形学来看看,看完那些算法你就明白了。

MapX偶下载过,但偶没用过,你想知道它当前的比例因子是多少,除非它提供了这个属性给你,或者有间接的属性可以计算出来,不然没办法。毕竟是个控件,不是源代码,你想修改都不行。
 
MapX中比例因子的计算公式:
1 / m_fscanle = Map1.Bounds.Width / Map1.Zoom
式中: m_fscanle 就是比例因子
Map1.Bounds.Width 是地图窗口宽度,单位是象素
Map1.Zoom 是地图窗口的视野,单位取决于 MapUnit 的设置
比例因子 m_fscanle 随地图窗口宽度和地图视野的改革而动态变化
 
那要怎样才能得到当前的比例尺乃?比如:我知道当前地图上1厘米代表实际地理上的多少米?MapUnit是miUnitMeter。请问应该怎么做?
谢谢!!!
 
我想了个算法,但不知道对不对
var
nPixel:integer;
DC:HDC;
X1,Y1,X2,Y2:double;
dist:double;
X,Y:Single;
begin

X:=10;
Y:=10;
Map1.ConvertCoord(X, Y, X1, Y1, miScreenToMap);
X:=11;
Y:=10;
Map1.ConvertCoord(X, Y, X2, Y2, miScreenToMap);
dist := Map1.Distance(X1, Y1, X2, Y2);//得到一个像素点在地图上的距离
DC:=GetDC(map1.Handle);
nPixel:=GetDeviceCaps(DC,LOGPIXELSX);//得出map控件上一英寸有多少像素。
//控件高和宽都是以像素为单位的,一英寸等于2.54厘米。
dist:=dist*nPixel/2.54;
showmessage('1厘米:' + FormatFloat('0.00',dist) + '米');
ReleaseDC(map1.Handle,DC);
//不知道这种算法对不对
end;
 
学习,帮顶!
 
to: 大唐电信
请你参考MapX自带的例程里的 UserDrawLayer 例子:
C:/Program Files/MapInfo/MapX 5.0/Samples50/Delphi/USER_DRAW_LAYER
这个例程是在地图上画比例尺
 
to ljmwh
我的MAPX安装目录下没有“Samples50”这个文件夹啊?
请你能把主要的代码贴出来。
谢谢!
 
可以在官方网站下载Data,需先注册.
http://extranet.mapinfo.com/products/Overview.cfm?productid=1041
 
to ljmwh,aszou,
能把代码发给我吗? 谢谢
105122033@qq.com
 
to: 大唐电信:
MapX例程 USER_DRAW_LAYER 已经发到 105122033@qq.com,请查收。
 
已收到,谢谢!
mapx例程里的算法和我的差不多是一样的。
揭贴。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部