Ejemplo n.º 1
0
void CShapefileLayer::OpenShapefile(const std::string& filename)
{
	m_FileName_ = filename;
	OGRRegisterAll();
	std::string pszDriverName = "ESRI Shapefile";
	//CPLSetConfigOption("SHAPE_ENCODING", "");				//支持中文

	OGRSFDriver* poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName.c_str());
	m_pDataSource_ = poDriver->Open(m_FileName_.c_str(), false);				//打开shapefile文件,获取数据源
	if(m_pDataSource_ == NULL)
	{
		m_bExistFile_ = false;
		return;
	}
	m_pLayer_ = m_pDataSource_->GetLayer(0);						//获取shapefile第0层
	if(m_pLayer_ == NULL)
	{
		m_bExistFile_ = false;
		return ;
	}
	int theFeatureCount = m_pLayer_->GetFeatureCount();				//层里面的数据数量
    OGRFeature *poFeature = NULL;									//读取的数据指针
	m_pLayer_->ResetReading();										//重新读取
	m_ShapefileType_ = m_pLayer_->GetLayerDefn()->GetGeomType();	//类型
	m_bExistFile_ = true;
}
Ejemplo n.º 2
0
JNIEXPORT jlong JNICALL Java_es_gva_cit_jogr_OGRSFDriver_openNat
  (JNIEnv *env, jobject obj, jlong cPtr, jstring pszName, jboolean bUpdate){
  	
  	OGRSFDriver 			*drv = (OGRSFDriver *) 0 ;
  	OGRDataSource 			*ds;
  	long 					ptr_ds;
  	drv = *(OGRSFDriver **)&cPtr;
	
  	const char *name = env->GetStringUTFChars( pszName, 0);
  	if(bUpdate==true)
  		ds=drv->Open(name,1);
  	else
	  	ds=drv->Open(name,0);
  	env->ReleaseStringUTFChars( pszName, name);
  	
  	if(ds==NULL)return -1;
  	
  	ptr_ds = (long)&(*ds);
  	return (jlong)ptr_ds;
  	
  }