gunx
路人甲
路人甲
  • 注册日期2004-07-01
  • 发帖数7
  • QQ
  • 铜币142枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:3965回复:11

MapX5.0的数据绑定问题

楼主#
更多 发布于:2004-07-27 13:20
<P>我的SQL Server中有一个表,包含X,Y坐标信息。我希望通过ADO将此表的数据邦定到Datasets中,生成临时新的点图层。如何实现。</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2004-07-27 17:22
<P>我觉得你可以直接读坐标,然后绘制新图层了</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
gunx
路人甲
路人甲
  • 注册日期2004-07-01
  • 发帖数7
  • QQ
  • 铜币142枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-07-27 17:56
<P>我现在是这样取出x,y坐标,绘制新图层,呵呵,想探讨一下直接绑定。</P>
举报 回复(0) 喜欢(0)     评分
leew-1
路人甲
路人甲
  • 注册日期2003-11-09
  • 发帖数18
  • QQ
  • 铜币81枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-07-30 14:17
<P>很简单</P><P>mapx有例子说明</P><P>是vb的</P><P>不过如果在c#下可能麻烦一些</P>
举报 回复(0) 喜欢(0)     评分
echo2003
点子王
点子王
  • 注册日期2003-07-28
  • 发帖数2453
  • QQ76947571
  • 铜币5473枚
  • 威望1点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
4楼#
发布于:2004-07-30 19:57
<P>下面是简单的例子,测试过的!供你参考!</P><P> Dim BindLayerObject As New MapXLib.BindLayer</P><P>  Dim flds As New MapXLib.Fields
  Dim conn As New ADODB.Connection
  Dim rst As New ADODB.Recordset
  Dim connstring As String
  Dim sqlstr As String
  </P><P>  Dim ds As MapXLib.Dataset
  ' Get the recordset to map</P><P>  ' MapStats Access database</P><P>  ' Has Longitude, Latitude columns</P><P>  connstring = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa" _
                ; ";Initial Catalog=BGGMCarDriverInfo;Data Source=bossygis"
  conn.Open connstring</P><P>  sqlstr = "select * from US_Cust"
  rst.CursorLocation = adUseClient
  rst.Open sqlstr, conn, adOpenStatic, adLockOptimistic</P><P>
  rst.MoveLast</P><P>    Debug.Print "Record Set has " ; rst.RecordCount ; " records."</P><P>  ' Fill in the Bindlayer object</P><P>  BindLayerObject.layername = "US Customers"  'Name of new layer</P><P>  BindLayerObject.RefColumn1 = "X" ' "Longitude"</P><P>  ' Use Column number (one'based!) or Column name</P><P>  BindLayerObject.RefColumn2 = "Y" ' "Latitude"</P><P>  BindLayerObject.LayerType = miBindLayerTypeXY
  BindLayerObject.FileSpec = App.Path ; "\map\US Customers" ; ".tab"
  'Type for X/Y binding</P><P>  Debug.Print "Finished setting up Bind Layer"
  If Dir(App.Path ; "\map\US Customers.*") <> "" Then Kill (App.Path ; "\map\US Customers.*")
  Set ds = Map1.DataSets.Add(miDataSetADO, rst, "testname", "City", , BindLayerObject)</P><P>  Debug.Print "Finished adding dataset"
  
  
    Dim ftrs As MapXLib.Features</P><P>
  rst.Close
</P>
举报 回复(0) 喜欢(0)     评分
javalisp
路人甲
路人甲
  • 注册日期2004-02-20
  • 发帖数57
  • QQ
  • 铜币258枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-08-24 11:43
在DELPHI下有例子程序么
举报 回复(0) 喜欢(0)     评分
heixiaozi
路人甲
路人甲
  • 注册日期2004-07-30
  • 发帖数7
  • QQ
  • 铜币141枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-08-25 23:14
C#的绑定如何实现?
<P>有没有人用C#实现过数据库的绑定?能否给出具体的代码来。现在发现,用C#+MapX开发真是一件剧痛苦的事情。明明书上讲的很清楚,自己也很明白,可在C#里就是实现不了。也不知道是MapX对C#的支持不好,还是我没有写对代码。哪位高手发发善心,给出些C#的代码出来。我都快要给折磨死了</P>
举报 回复(0) 喜欢(0)     评分
gzmslinzy
路人甲
路人甲
  • 注册日期2004-09-08
  • 发帖数6
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2004-09-25 12:27
有没有用VC +MAPXj,实现SQL与ADO连接的???
<P>long fieldcount=0;
void zjgisView::OnToolUsed(short ToolNum,double X1,double Y1,double X2,double Y2,double Distance,BOOL Shift,BOOL Ctrl,BOOL* EnableDefault)
{  
 
 CString str;
 CMapXPoint pt;
 CMapXFeatures fs;
 CMapXFeature f;
 pt.CreateDispatch(pt.GetClsid());
 pt.Set(X1,Y1);
 str.Format("Tool=%d,[%f,%f],[%f,%f],dist=%f,%s,%s\n",ToolNum,X1,Y1,X2,Y2,Distance,(Shift)? "Shift":" ",(Ctrl)? "Ctrl-": " ");
 TRACE(str);</P>
<P> SetRedraw(false);
  
 if(ToolNum==MYTOOL_INFO)
 {
  dlg.m_ctrList.ResetContent();
  
  try
  {
   if(m_ctrlMapX.GetDatasets().GetCount()==0)
   {   BSTR ColName;
    VARIANT sd;
             CMapXLayer layer;      
             layer =m_ctrlMapX.GetLayers().Item(1);
    sd.vt = VT_DISPATCH;
    sd.pdispVal = layer.m_lpDispatch;
    sd.pdispVal->AddRef();
    CString strLayername=m_ctrlMapX.GetLayers().Item(1).GetName();        
   // dataset =m_ctrlMapX.GetDatasets().Add(miDataSetLayer,sd,strLayername);
       CString sql=_T("SELECT * FROM 光点分布");            
    pRs->Open((_variant_t)sql,(IDispatch*)pConn,adOpenDynamic,adLockOptimistic,adCmdText);
       pRs->GetFields()->Item[long(0)]->get_Name(;ColName);
    dataset =layer.GetDatasets().Add(miDataSetADO,(_variant_t)(IDispatch*)pRs,(char*)_bstr_t(ColName),false);
    fieldcount=dataset.GetFields().GetCount();
   }</P>
<P>   fs=m_ctrlMapX.GetLayers().Item(1).SearchAtPoint(pt);
   if(fs.GetCount()!=1)
   {
    return;
   }</P>
<P>   f=fs.Item(1);</P>
<P>   COleVariant vRow;
   COleVariant vVal;
   </P>
<P>   vRow.vt=VT_DISPATCH;
   vRow.pdispVal=f.m_lpDispatch;
   vRow.pdispVal->AddRef();</P>
<P>   CString strtemp;
          
   for(long i=1;i<=fieldcount;i++)
   {
      strtemp=dataset.GetFields().Item(i).GetName();
   strtemp+=_T(":");</P>
<P>   vVal=dataset.GetValue(vRow,COleVariant(i));
   if(vVal.vt!=VT_NULL)
   {
    vVal.ChangeType(VT_BSTR);  
    strtemp+=vVal.bstrVal;
   }
   dlg.m_ctrList.AddString((LPCTSTR)strtemp);</P>
<P>   }</P>
<P>      dlg.UpdateData(false);
   dlg.ShowWindow(SW_SHOW);
  
  }
 
  catch(COleDispatchException *e)
  {
   e->ReportError();
   e->Delete();
  }</P>
<P>  catch(COleException *e)
  {
   e->ReportError();
   e->Delete();
  
  }
 }</P>
<P>
SetRedraw(true);</P>
<P>}
</P>
<P>);
    dataset =layer.GetDatasets().Add(miDataSetADO,(_variant_t)(IDispatch*)pRs,(char*)_bstr_t(ColName),false);
    能运行,但是弹出"operation is not allow on this datasets collection"</P>
举报 回复(0) 喜欢(0)     评分
jeason
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数15
  • QQ
  • 铜币174枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2004-09-27 10:05
<P>楼上的说:我现在是这样取出x,y坐标,绘制新图层,呵呵,想探讨一下直接绑定。</P><P>请问这个怎么实现,我想看看源代码可以么?</P>
举报 回复(0) 喜欢(0)     评分
fjlyccy
路人甲
路人甲
  • 注册日期2004-09-08
  • 发帖数120
  • QQ
  • 铜币424枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2005-09-11 20:42
我来看一下
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部