kevinh
路人甲
路人甲
  • 注册日期2006-06-28
  • 发帖数6
  • QQ
  • 铜币127枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:3294回复:2

[求助]ArcEngine Runtime

楼主#
更多 发布于:2006-12-29 15:30
<P>'ArcEngine RUNTIME客户端创建要素集</P>
<P>'设置连接属性<BR>Function SetConnProperty_Oracle() As IPropertySet<BR>    Dim ipParamSet      As IPropertySet<BR>    Set ipParamSet = New PropertySet<BR>    ipParamSet.SetProperty "SERVER", "kyo"<BR>    ipParamSet.SetProperty "INSTANCE", "5157"<BR>'    ipParamSet.SetProperty "Database", "dbsd_kyo"<BR>    ipParamSet.SetProperty "USER", "sd"<BR>    ipParamSet.SetProperty "PASSWORD", "sd"<BR>    ipParamSet.SetProperty "VERSION", "SDE.DEFAULT"<BR>    <BR>    Set SetConnProperty_Oracle = ipParamSet<BR>End Function</P>
<P>Function GetWks_Oracle() As IWorkspace<BR>    Dim ipWF As IWorkspaceFactory<BR>    Set ipWF = New SdeWorkspaceFactory<BR>    If ipWF Is Nothing Then<BR>        Set GetWks_Oracle = Nothing<BR>        End<BR>    End If<BR>    <BR>    Dim ipWks As IWorkspace<BR>    Dim ipParamSet As IPropertySet<BR>    Set ipParamSet = SetConnProperty_Oracle()<BR>    <BR>    Set ipWks = ipWF.Open(ipParamSet, 0)<BR>    <BR>    Set GetWks_Oracle = ipWks<BR>End Function</P>
<P>' 创建表<BR>Function TestSDE_CreateTbl_Oracle1()<BR>On Error GoTo Err_TestSDE_CreateTbl_Oracle1<BR>    Dim bSuccess    As Boolean<BR>    <BR>    '取要素空间<BR>    Dim pWks        As IWorkspace<BR>    Dim pFWks       As IFeatureWorkspace<BR>    Set pWks = GetWks_Oracle()<BR>    Set pFWks = pWks    <BR>    <BR>    '新建要素空间参考系<BR>    Dim pFDS As IFeatureDataset<BR>    Dim ipSpatialReferenceFactory As ISpatialReferenceFactory<BR>    Dim ipSpatialReference As ISpatialReference        <BR>    Set ipSpatialReferenceFactory = New SpatialReferenceEnvironment<BR>    Set ipSpatialReference = ipSpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile("E:\\65lnd\\Beijing 1954 3 Degree GK CM 117E.prj")<BR>   <BR>    'success<BR>    Set pFDS = pFWks.CreateFeatureDataset("sd.test", ipSpatialReference)<BR>    bSuccess = True<BR>    <BR>        <BR>Err_TestSDE_CreateTbl_Oracle1:<BR>    If bSuccess = False Then<BR>        MsgBox "ErrCode : " ; CStr(Err.Number) ; vbCrLf ; Err.Description<BR>    End If<BR>End Function</P>
喜欢0 评分0
kevinh
路人甲
路人甲
  • 注册日期2006-06-28
  • 发帖数6
  • QQ
  • 铜币127枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-12-29 15:33
<P>上面大VB代码是对的,可是我在VC里面测试的代码有问题,如下:</P>
<P>//相关环境初始化</P>
<P>#pragma warning (disable:4786)<BR>#pragma warning(disable : 4192)<BR>#pragma warning (disable:4146)</P>
<P>#import "d:\Program Files\ArcGIS\COM\esriSystem.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriGeometry.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriGeoDatabase.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")<BR>#import "d:\Program Files\ArcGIS\COM\esriDataSourcesGDB.olb" raw_interfaces_only raw_native_types no_namespace named_guids exclude("OLE_COLOR", "OLE_HANDLE")</P>
<P>//arcgis组件初始化<BR> AfxOleInit();<BR> <BR> if(m_ipAoInit == NULL)//类成员变量IAoIntialize<BR>  m_ipAoInit.CreateInstance(CLSID_AoInitialize);<BR> if(m_ipAoInit == NULL)<BR>  return FALSE;<BR> esriLicenseStatus aeLicense; <BR> m_ipAoInit->IsProductCodeAvailable(esriLicenseProductCodeEngineGeoDB,;aeLicense);<BR> if(aeLicense!=esriLicenseAvailable ;; aeLicense!=esriLicenseCheckedOut)<BR> {<BR>  m_ipAoInit->Initialize(esriLicenseProductCodeEngineGeoDB,;aeLicense);<BR>  if(aeLicense!=esriLicenseAvailable ;; aeLicense!=esriLicenseCheckedOut)<BR>  {<BR>   AfxMessageBox("没有可用的License!");<BR>   return FALSE;<BR>  }<BR> }</P>
<P>//测试主体代码</P>
<P>void CMainFrame::Ontest() <BR>{ <BR> //创建workspace<BR> IWorkspaceFactoryPtr ipWorkSpaceFactory;<BR> HRESULT hr = ipWorkSpaceFactory.CreateInstance(CLSID_SdeWorkspaceFactory);<BR> if(FAILED(hr))<BR>  return;</P>
<P> IWorkspacePtr ipWorkspace;<BR> IPropertySetPtr ipPropertySet(CLSID_PropertySet);<BR> if(ipPropertySet==NULL)<BR>  return ;<BR> <BR> // 设置链接属性<BR> ipPropertySet->SetProperty(_bstr_t("SERVER"),   _variant_t("kyo"));  //服务器<BR> ipPropertySet->SetProperty(_bstr_t("INSTANCE"), _variant_t("5157")); //服务端口号<BR> ipPropertySet->SetProperty(_bstr_t("USER"),     _variant_t("sd"));  //sde用户名<BR> ipPropertySet->SetProperty(_bstr_t("PASSWORD"), _variant_t("sd"));  //sde密码<BR> ipPropertySet->SetProperty(_bstr_t("VERSION"),  _variant_t(_T("SDE.DEFAULT")));//default<BR> hr = ipWorkSpaceFactory->Open(ipPropertySet, NULL, ;ipWorkspace);  <BR> if(FAILED(hr) || ipWorkspace == NULL)//打开成功1111<BR>  return;</P>
<P> IFeatureDatasetPtr  ipRtnDataset;<BR> IFeatureWorkspacePtr ipFeatureWS(ipWorkspace); <BR> if(ipFeatureWS == NULL)<BR>  return;<BR> <BR> //准备空间参考系<BR> ISpatialReferenceFactoryPtr ipSpatialReferenceFactory;<BR> ISpatialReferencePtr ipSpatialReference;<BR> ipSpatialReferenceFactory.CreateInstance(CLSID_SpatialReferenceEnvironment);<BR> hr = ipSpatialReferenceFactory->CreateESRISpatialReferenceFromPRJFile(_bstr_t("E:\\65lnd\\Beijing 1954 3 Degree GK CM 117E.prj"),;ipSpatialReference);<BR> if(FAILED(hr) || ipSpatialReference == NULL)//创建参考系也成功2222<BR> {<BR>  AfxMessageBox("创建空间参考系失败!");<BR>  return;<BR> }</P>
<P> IFeatureDatasetPtr ipFDS;<BR> hr = ipFeatureWS->CreateFeatureDataset(_bstr_t("sd.test"),ipSpatialReference,;ipFDS);<BR> if(FAILED(hr) || ipFDS == NULL)   //创建要素集失败3333<BR> {<BR>  AfxMessageBox("创建要素集失败!");<BR>  return;<BR> }<BR>}</P>

<P>3333失败,不知道为什么....</P>
举报 回复(0) 喜欢(0)     评分
riding
路人甲
路人甲
  • 注册日期2007-09-05
  • 发帖数8
  • QQ
  • 铜币100枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-10-06 12:13
看看返回的错误代码,在帮助FDOERROR CONSTANT中查看一下,就知道原因了!我现在碰到是<b>FDO_E_NO_SCHEMA_LICENSE, 不知道谁有这样的LICENSE文件!哎,真不习惯这个鸟公司!<br></b>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部