|
@@ -433,11 +433,18 @@ int main(int argc, char *argv[])
|
|
if (Ogr_ds == NULL)
|
|
if (Ogr_ds == NULL)
|
|
G_fatal_error(_("Unable to open data source <%s>"), dsn);
|
|
G_fatal_error(_("Unable to open data source <%s>"), dsn);
|
|
|
|
|
|
- if (param.geom->answer &&
|
|
|
|
- !OGR_DS_TestCapability(Ogr_ds, ODsCCreateGeomFieldAfterCreateLayer)) {
|
|
|
|
- G_warning(_("Option <%s> will be ignored. OGR doesn't support it for selected format (%s)."),
|
|
|
|
- param.geom->key, OGR_Dr_GetName(OGR_DS_GetDriver(Ogr_ds)));
|
|
|
|
|
|
+ if (param.geom->answer) {
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
|
|
+ if (!OGR_DS_TestCapability(Ogr_ds, ODsCCreateGeomFieldAfterCreateLayer)) {
|
|
|
|
+ G_warning(_("Option <%s> will be ignored. OGR doesn't support it for selected format (%s)."),
|
|
|
|
+ param.geom->key, OGR_Dr_GetName(OGR_DS_GetDriver(Ogr_ds)));
|
|
|
|
+ param.geom->answer = NULL;
|
|
|
|
+ }
|
|
|
|
+#else
|
|
|
|
+ G_warning(_("Option <%s> will be ignored. Multiple geometry fields are supported by GDAL >= 1.11"),
|
|
|
|
+ param.geom->key);
|
|
param.geom->answer = NULL;
|
|
param.geom->answer = NULL;
|
|
|
|
+#endif
|
|
}
|
|
}
|
|
|
|
|
|
/* check encoding for given driver */
|
|
/* check encoding for given driver */
|
|
@@ -830,13 +837,14 @@ int main(int argc, char *argv[])
|
|
Ogr_layer = OGR_DS_GetLayer(Ogr_ds, layer_id);
|
|
Ogr_layer = OGR_DS_GetLayer(Ogr_ds, layer_id);
|
|
Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer);
|
|
Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer);
|
|
igeom = -1;
|
|
igeom = -1;
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
if (param.geom->answer) {
|
|
if (param.geom->answer) {
|
|
igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer);
|
|
igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer);
|
|
if (igeom < 0)
|
|
if (igeom < 0)
|
|
G_fatal_error(_("Geometry column <%s> not found in OGR layer <%s>"),
|
|
G_fatal_error(_("Geometry column <%s> not found in OGR layer <%s>"),
|
|
param.geom->answer, OGR_L_GetName(Ogr_layer));
|
|
param.geom->answer, OGR_L_GetName(Ogr_layer));
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+#endif
|
|
n_features = feature_count = 0;
|
|
n_features = feature_count = 0;
|
|
|
|
|
|
n_features = OGR_L_GetFeatureCount(Ogr_layer, 1);
|
|
n_features = OGR_L_GetFeatureCount(Ogr_layer, 1);
|
|
@@ -849,18 +857,24 @@ int main(int argc, char *argv[])
|
|
G_percent(feature_count++, n_features, 1); /* show something happens */
|
|
G_percent(feature_count++, n_features, 1); /* show something happens */
|
|
|
|
|
|
/* Geometry */
|
|
/* Geometry */
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
for (i = 0; i < OGR_FD_GetGeomFieldCount(Ogr_featuredefn); i++) {
|
|
for (i = 0; i < OGR_FD_GetGeomFieldCount(Ogr_featuredefn); i++) {
|
|
if (igeom > -1 && i != igeom)
|
|
if (igeom > -1 && i != igeom)
|
|
continue; /* use only geometry defined via param.geom */
|
|
continue; /* use only geometry defined via param.geom */
|
|
|
|
|
|
Ogr_geometry = OGR_F_GetGeomFieldRef(Ogr_feature, i);
|
|
Ogr_geometry = OGR_F_GetGeomFieldRef(Ogr_feature, i);
|
|
|
|
+#else
|
|
|
|
+ Ogr_geometry = OGR_F_GetGeometryRef(Ogr_feature);
|
|
|
|
+#endif
|
|
if (Ogr_geometry != NULL) {
|
|
if (Ogr_geometry != NULL) {
|
|
if (!flag.no_clean->answer)
|
|
if (!flag.no_clean->answer)
|
|
poly_count(Ogr_geometry, (type & GV_BOUNDARY));
|
|
poly_count(Ogr_geometry, (type & GV_BOUNDARY));
|
|
if (OGR_G_GetCoordinateDimension(Ogr_geometry) > 2)
|
|
if (OGR_G_GetCoordinateDimension(Ogr_geometry) > 2)
|
|
input3d = 1;
|
|
input3d = 1;
|
|
}
|
|
}
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
OGR_F_Destroy(Ogr_feature);
|
|
OGR_F_Destroy(Ogr_feature);
|
|
}
|
|
}
|
|
G_percent(1, 1, 1);
|
|
G_percent(1, 1, 1);
|
|
@@ -924,9 +938,11 @@ int main(int argc, char *argv[])
|
|
Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer);
|
|
Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer);
|
|
|
|
|
|
igeom = -1;
|
|
igeom = -1;
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
if (param.geom->answer)
|
|
if (param.geom->answer)
|
|
igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer);
|
|
igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer);
|
|
-
|
|
|
|
|
|
+#endif
|
|
|
|
+
|
|
if (param.key->answer) {
|
|
if (param.key->answer) {
|
|
const char *fid_column;
|
|
const char *fid_column;
|
|
fid_column = OGR_L_GetFIDColumn(Ogr_layer);
|
|
fid_column = OGR_L_GetFIDColumn(Ogr_layer);
|
|
@@ -1121,12 +1137,15 @@ int main(int argc, char *argv[])
|
|
G_percent(feature_count++, n_features, 1); /* show something happens */
|
|
G_percent(feature_count++, n_features, 1); /* show something happens */
|
|
|
|
|
|
/* Geometry */
|
|
/* Geometry */
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
for (i = 0; i < OGR_FD_GetGeomFieldCount(Ogr_featuredefn); i++) {
|
|
for (i = 0; i < OGR_FD_GetGeomFieldCount(Ogr_featuredefn); i++) {
|
|
if (igeom > -1 && i != igeom)
|
|
if (igeom > -1 && i != igeom)
|
|
continue; /* use only geometry defined via param.geom */
|
|
continue; /* use only geometry defined via param.geom */
|
|
|
|
|
|
Ogr_geometry = OGR_F_GetGeomFieldRef(Ogr_feature, i);
|
|
Ogr_geometry = OGR_F_GetGeomFieldRef(Ogr_feature, i);
|
|
-
|
|
|
|
|
|
+#else
|
|
|
|
+ Ogr_geometry = OGR_F_GetGeometryRef(Ogr_feature);
|
|
|
|
+#endif
|
|
if (Ogr_geometry == NULL) {
|
|
if (Ogr_geometry == NULL) {
|
|
nogeom++;
|
|
nogeom++;
|
|
}
|
|
}
|
|
@@ -1139,8 +1158,9 @@ int main(int argc, char *argv[])
|
|
geom(Ogr_geometry, Out, layer + 1, cat, min_area, type,
|
|
geom(Ogr_geometry, Out, layer + 1, cat, min_area, type,
|
|
flag.no_clean->answer);
|
|
flag.no_clean->answer);
|
|
}
|
|
}
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+#endif
|
|
/* Attributes */
|
|
/* Attributes */
|
|
if (!flag.notab->answer) {
|
|
if (!flag.notab->answer) {
|
|
sprintf(buf, "insert into %s values ( %d", Fi->table, cat);
|
|
sprintf(buf, "insert into %s values ( %d", Fi->table, cat);
|
|
@@ -1374,9 +1394,11 @@ int main(int argc, char *argv[])
|
|
Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer);
|
|
Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer);
|
|
|
|
|
|
igeom = -1;
|
|
igeom = -1;
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
if (param.geom->answer)
|
|
if (param.geom->answer)
|
|
igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer);
|
|
igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer);
|
|
-
|
|
|
|
|
|
+#endif
|
|
|
|
+
|
|
n_features = OGR_L_GetFeatureCount(Ogr_layer, 1);
|
|
n_features = OGR_L_GetFeatureCount(Ogr_layer, 1);
|
|
OGR_L_ResetReading(Ogr_layer);
|
|
OGR_L_ResetReading(Ogr_layer);
|
|
|
|
|
|
@@ -1386,17 +1408,22 @@ int main(int argc, char *argv[])
|
|
cat++;
|
|
cat++;
|
|
G_percent(cat, n_features, 2);
|
|
G_percent(cat, n_features, 2);
|
|
/* Geometry */
|
|
/* Geometry */
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
for (i = 0; i < OGR_FD_GetGeomFieldCount(Ogr_featuredefn); i++) {
|
|
for (i = 0; i < OGR_FD_GetGeomFieldCount(Ogr_featuredefn); i++) {
|
|
if (igeom > -1 && i != igeom)
|
|
if (igeom > -1 && i != igeom)
|
|
continue; /* use only geometry defined via param.geom */
|
|
continue; /* use only geometry defined via param.geom */
|
|
|
|
|
|
Ogr_geometry = OGR_F_GetGeomFieldRef(Ogr_feature, i);
|
|
Ogr_geometry = OGR_F_GetGeomFieldRef(Ogr_feature, i);
|
|
|
|
+#else
|
|
|
|
+ Ogr_geometry = OGR_F_GetGeometryRef(Ogr_feature);
|
|
|
|
+#endif
|
|
if (Ogr_geometry != NULL) {
|
|
if (Ogr_geometry != NULL) {
|
|
centroid(Ogr_geometry, Centr, &si, layer + 1, cat,
|
|
centroid(Ogr_geometry, Centr, &si, layer + 1, cat,
|
|
min_area, type);
|
|
min_area, type);
|
|
}
|
|
}
|
|
|
|
+#if GDAL_VERSION_NUM >= 1110000
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+#endif
|
|
OGR_F_Destroy(Ogr_feature);
|
|
OGR_F_Destroy(Ogr_feature);
|
|
}
|
|
}
|
|
}
|
|
}
|