diff --git a/DataViewer/DataSource.cpp b/DataViewer/DataSource.cpp index e1b220c0..d35db2e2 100644 --- a/DataViewer/DataSource.cpp +++ b/DataViewer/DataSource.cpp @@ -51,6 +51,7 @@ bool IDataSource::IsWritable(GdaConst::DataSourceType ds_type) ds_type == GdaConst::ds_mysql || ds_type == GdaConst::ds_oci || ds_type == GdaConst::ds_parquet || + ds_type == GdaConst::ds_arrow || ds_type == GdaConst::ds_postgresql ) return true; return false; @@ -144,6 +145,8 @@ wxString IDataSource::GetDataTypeNameByExt(wxString ext) ds_format = "ODS"; else if(ext.CmpNoCase("parquet")==0) ds_format = "Parquet"; + else if(ext.CmpNoCase("arrow")==0) + ds_format = "Arrow"; //else // ds_format = "Unknown"; @@ -196,6 +199,7 @@ IDataSource* IDataSource::CreateDataSource(wxString data_type_name, type == GdaConst::ds_xls || type == GdaConst::ds_xlsx || type == GdaConst::ds_parquet || + type == GdaConst::ds_arrow || type == GdaConst::ds_geo_json ) { // using xxx to create DataSource instance @@ -254,6 +258,7 @@ IDataSource* IDataSource::CreateDataSource(wxString ds_json) type == GdaConst::ds_xls || type == GdaConst::ds_xlsx || type == GdaConst::ds_parquet || + type == GdaConst::ds_arrow || type == GdaConst::ds_geo_json ) { json_spirit::Value json_ds_path; diff --git a/DialogTools/DatasourceDlg.cpp b/DialogTools/DatasourceDlg.cpp index 41ebb384..db978ce7 100644 --- a/DialogTools/DatasourceDlg.cpp +++ b/DialogTools/DatasourceDlg.cpp @@ -54,6 +54,7 @@ void DatasourceDlg::Init() // create file type dataset pop-up menu dynamically ds_names.Add("GeoParquet (*.parquet)|*.parquet"); ds_names.Add("ESRI Shapefile (*.shp)|*.shp"); + ds_names.Add("GeoArrow (*.arrow)|*.arrow"); ds_names.Add("ESRI File Geodatabase (*.gdb)|*.gdb"); ds_names.Add("GeoJSON (*.geojson;*.json)|*.geojson;*.json"); ds_names.Add("GeoPackage (*.gpkg)|*.gpkg"); diff --git a/GdaConst.cpp b/GdaConst.cpp index a7f05631..b6b196e9 100644 --- a/GdaConst.cpp +++ b/GdaConst.cpp @@ -773,6 +773,17 @@ void GdaConst::init() datasrc_field_illegal_regex[ds_dbf] = db_field_name_illegal_regex; datasrc_field_casesensitive[ds_dbf] = false; + datasrc_str_to_type["Arrow"] = ds_arrow; + datasrc_type_to_prefix[ds_arrow] = ""; + datasrc_type_to_fullname[ds_arrow] = "Arrow"; + // share the same with DBF + datasrc_table_lens[ds_arrow] = 128; + datasrc_field_lens[ds_arrow] = 10; + datasrc_field_warning[ds_arrow] = default_field_warning; + datasrc_field_regex[ds_arrow] = db_field_name_regex; + datasrc_field_illegal_regex[ds_arrow] = db_field_name_illegal_regex; + datasrc_field_casesensitive[ds_arrow] = false; + datasrc_str_to_type["Parquet"] = ds_parquet; datasrc_type_to_prefix[ds_parquet] = ""; datasrc_type_to_fullname[ds_parquet] = "Parquet"; diff --git a/GdaConst.h b/GdaConst.h index 03dffc38..a10a49ab 100644 --- a/GdaConst.h +++ b/GdaConst.h @@ -74,7 +74,7 @@ class GdaConst { ds_csv, ds_dbf, ds_geo_json, ds_gml, ds_kml, ds_mapinfo, ds_mysql, ds_ms_sql, ds_oci, ds_odbc, ds_postgresql, ds_shapefile, ds_sqlite, ds_gpkg, ds_wfs, ds_xls, ds_xlsx, ds_osm, - ds_ods, ds_cartodb, ds_parquet, ds_unknown }; + ds_ods, ds_cartodb, ds_parquet, ds_arrow, ds_unknown }; static std::map datasrc_str_to_type; static std::map datasrc_type_to_str;