gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1554回复:4

[分享]从数据库绘制MapX地图

楼主#
更多 发布于:2004-11-15 11:32
<b>
<DIV><FONT size=3><B>主题</B>:MapX Delphi数据库 地图 Layer Style Font</FONT></DIV>
<DIV><FONT size=3></FONT> </DIV>
<DIV><FONT size=3></FONT></DIV>
<DIV><FONT size=3>本文将带你从数据库中取数据在MapX上画出来。</FONT></DIV>
<DIV><FONT size=3><B>1</B>、在数据库中建立如下的表用于存储坐标:</FONT></DIV>
<DIV><FONT size=3></FONT><FONT size=3>ID            integer     //唯一编号</FONT></DIV>
<DIV><FONT size=3>Name      string      //名称(标签)</FONT></DIV>
<DIV><FONT size=3>X             float //地图坐标X</FONT></DIV>
<DIV><FONT size=3>Y             float //地图坐标Y</FONT></DIV>
<DIV><FONT size=3></FONT><FONT size=3>假设这个表命名为XUnit</FONT></DIV>
<DIV><FONT size=3><B>2</B>、编辑MapX地图,添加一个新的Layer,定义好你希望将来添加图层显示样式,然后设置这个图层不可见、不可编辑,此图层名称假设为“企事业单位”。</FONT></DIV>
<DIV><FONT size=3><B>3</B>、在你的程序中添加MapX控件,命名为Map1</FONT></DIV>
<DIV><FONT size=3><B>4</B>、在窗口中添加BDE或者ADO组件并连接到你的数据库,假设你添加了AdoConnection1和ADOTable1并且把他们的相关属性都设好了ADOTable1中应该是上述表中的全部内容。</FONT></DIV>
<DIV><FONT size=3><B>5</B><B>、</B>添加按钮,并在按钮中添加Click时间代码如下:</FONT></DIV>
<DIV><FONT size=3><B>procedure</B> TForm1.Button1Click(<B>Sender</B>: TObject);</FONT></DIV>
<DIV><B><FONT size=3>var</FONT></B></DIV>
<DIV><FONT size=3>  lyr : layer;//层</FONT></DIV>
<DIV><FONT size=3>  fts : feature;//特征</FONT></DIV>
<DIV><FONT size=3>  pt : point;//点</FONT></DIV>
<DIV><FONT size=3>  mstyle : style;//样式</FONT></DIV>
<DIV><FONT size=3>  str : <B>string</B>;//特征标注</FONT></DIV>
<DIV><FONT size=3>  x,y : <B>double</B>;</FONT></DIV>
<DIV><B><FONT size=3>begin</FONT></B></DIV>
<DIV><FONT size=3>  lyr := Map1.Layers.CreateLayer(''tempAnimate'', EmptyParam,1,EmptyParam, EmptyParam);</FONT></DIV>
<DIV><FONT size=3>       //在Map1中创建一个Layer</FONT></DIV>
<DIV><FONT size=3>  Map1.Layers.AnimationLayer := lyr;//设为当前层</FONT></DIV>
<DIV><FONT size=3></FONT> </DIV>
<DIV><FONT size=3>  lyr.Editable := true;//可编辑</FONT></DIV>
<DIV><FONT size=3>  pt := copoint.Create;</FONT></DIV>
<DIV><FONT size=3>  mstyle := costyle.Create;</FONT></DIV>
<DIV><FONT size=3>  mstyle := map1.Layers.item(''企事业单位'').AllFeatures.Item(1).Style;//此处获取在层“企事业单位”中存储的特征样式</FONT></DIV>
<DIV><FONT size=3>  lyr.Style := map1.Layers.item(''企事业单位'').Style;//层的样式</FONT></DIV>
<DIV><FONT size=3>  lyr.LabelProperties.Style := map1.Layers.item(''企事业单位'').LabelProperties.Style;//标签样式</FONT></DIV>
<DIV><FONT size=3>  adotable1.First;</FONT></DIV>
<DIV><FONT size=3>  <B>while</B> <B>not</B> adotable1.Eof <B>do</B></FONT></DIV>
<DIV><FONT size=3>  <B>begin</B></FONT></DIV>
<DIV><FONT size=3>    X := adotable1.fieldbyname(''X'').AsFloat ;</FONT></DIV>
<DIV><FONT size=3>    y := adotable1.fieldbyname(''Y'').AsFloat;</FONT></DIV>
<DIV><FONT size=3>    str := adotable1.fieldbyname(''Name'').AsString;</FONT></DIV>
<DIV><FONT size=3>    pt.Set_(x,y);</FONT></DIV>
<DIV><FONT size=3>    fts := map1.FeatureFactory.CreateSymbol(pt,mstyle);//创建特征</FONT></DIV>
<DIV><FONT size=3>    fts.KeyValue := str;//标注</FONT></DIV>
<DIV><FONT size=3>    lyr.AddFeature(fts,emptyparam);//将特征添加到层</FONT></DIV>
<DIV><FONT size=3>    adotable1.Next;</FONT></DIV>
<DIV><FONT size=3>  <B>end</B>;</FONT></DIV>
<DIV><FONT size=3>  lyr.AutoLabel := true;//自动标注</FONT></DIV>
<DIV><FONT size=3>  lyr.Visible := true;//可见</FONT></DIV>
<DIV><FONT size=3>  lyr.ZoomMin := 0;//缩放范围</FONT></DIV>
<DIV><FONT size=3>  lyr.ZoomMax := 77;</FONT></DIV>
<DIV><FONT size=3><B>end</B>;</FONT></DIV>
<DIV><FONT size=3><B>6</B><B>、</B>按照以上步骤我们可以直接将数据库中的数据在地图上表现出来,当然我们只是表现了特征点,并没有表现那些区域等其他东西,其他东西应该也可以,不过我用不到,哈哈。。</FONT></DIV></b>
喜欢0 评分0
GIS麦田守望者,期待与您交流。
nudtlarry
路人甲
路人甲
  • 注册日期2004-12-05
  • 发帖数319
  • QQ
  • 铜币770枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-01-23 13:58
有VC版的吗,总统阁下?<img src="images/post/smile/dvbbs/em11.gif" />
---------------------------------------------- E-Mail: nudtlarry@163.com ----------------------------------------------
举报 回复(0) 喜欢(0)     评分
nacoo
路人甲
路人甲
  • 注册日期2004-11-26
  • 发帖数21
  • QQ
  • 铜币143枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-11-28 20:14
<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
qiujufei
路人甲
路人甲
  • 注册日期2004-11-18
  • 发帖数8
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-11-18 12:00
<img src="images/post/smile/dvbbs/em22.gif" />
举报 回复(0) 喜欢(0)     评分
jjw
jjw
路人甲
路人甲
  • 注册日期2004-09-24
  • 发帖数4
  • QQ
  • 铜币148枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-11-15 14:47
Thank You<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部