function OGRSetGetString($hFeatureIn, $iField, $value) { /*Assigning a string value to the field to the field "0".*/ OGR_F_SetFieldString($hFeatureIn, $iField, $value); /*Retrieving the field value. */ $value = OGR_F_GetFieldAsString($hFeatureIn, $iField); printf("String value = %s\n", $value); return OGRERR_NONE; }
function TranslateLayer($hSrcDS, $hSrcLayer, $hDstDS, $amAttributeIn) { /* -------------------------------------------------------------------- */ /* Create the layer. */ /* -------------------------------------------------------------------- */ if (!OGR_DS_TestCapability($hDstDS, ODsCCreateLayer)) { printf("%s data source does not support layer creation.\n", OGR_DS_GetName($hDstDS)); return OGRERR_FAILURE; } $hFDefn = OGR_L_GetLayerDefn($hSrcLayer); /* MapInfo data sources are created with one empty layer corresponding to the $strFname that was passed to the OGR_Dr_CreateDataSource() call. Fetch this layer handle now. */ $hDstLayer = OGR_DS_GetLayer($hDstDS, 0); if ($hDstLayer == NULL) { return FALSE; } $iFieldCount = OGR_FD_GetFieldCount($hFDefn); printf("field count =%d\n", $iFieldCount); /* -------------------------------------------------------------------- */ /* Add fields. */ /* -------------------------------------------------------------------- */ for ($iField = 0; $iField < $iFieldCount; $iField++) { if (OGR_L_CreateField($hDstLayer, OGR_FD_GetFieldDefn($hFDefn, $iField), 0) != OGRERR_NONE) { return FALSE; } } /* -------------------------------------------------------------------- */ /* Transfer features. */ /* -------------------------------------------------------------------- */ OGR_L_ResetReading($hSrcLayer); while (($hFeature = OGR_L_GetNextFeature($hSrcLayer)) != NULL) { $hDstFeature = OGR_F_Create(OGR_L_GetLayerDefn($hDstLayer)); /* Verify if the current feature is corresponding to the feature to update the attribute to. If yes, the value corresponding to the attribute name selected is substituted. All other attributes and geometry are copied as is. If not, the source feature is copied to the destination feature as is.*/ if ($amAttributeIn && OGR_F_GetFID($hFeature) == $amAttributeIn[0]) { for ($i = 0; $i < $iFieldCount; $i++) { $hCurrentFieldDefn = OGR_F_GetFieldDefnRef($hFeature, $i); $strCurrentFieldName = OGR_FLD_GetNameRef($hCurrentFieldDefn); if ($strCurrentFieldName == $amAttributeIn[1]) { $value = $amAttributeIn[2]; } else { $value = OGR_F_GetFieldAsString($hFeature, $i); } OGR_F_SetFieldString($hDstFeature, $i, $value); } $hGeometry = OGR_F_GetGeometryRef($hFeature); OGR_F_SetGeometry($hDstFeature, $hGeometry); } else { if (OGR_F_SetFrom($hDstFeature, $hFeature, FALSE) != OGRERR_NONE) { OGR_F_Destroy($hFeature); printf("Unable to translate feature %d from layer %s.\n", OGR_F_GetFID($hFeature), OGR_FD_GetName($hFDefn)); return FALSE; } } OGR_F_Destroy($hFeature); if (OGR_L_CreateFeature($hDstLayer, $hDstFeature) != OGRERR_NONE) { OGR_F_Destroy($hDstFeature); return FALSE; } OGR_F_Destroy($hDstFeature); } return TRUE; }
function OGR_F_DumpReadable($hFeature) { $hFeatureDefn = OGR_F_GetDefnRef($hFeature); printf("OGRFeature(%s):%ld\n", OGR_FD_GetName($hFeatureDefn), OGR_F_GetFID($hFeature)); $numFields = OGR_FD_GetFieldCount($hFeatureDefn); for ($iField = 0; $iField < $numFields; $iField++) { $hFieldDefn = OGR_FD_GetFieldDefn($hFeatureDefn, $iField); printf(" %s (%s) = ", OGR_FLD_GetNameRef($hFieldDefn), OGR_GetFieldTypeName(OGR_FLD_GetType($hFieldDefn))); if (OGR_F_IsFieldSet($hFeature, $iField)) { printf("%s\n", OGR_F_GetFieldAsString($hFeature, $iField)); } else { printf("(null)\n"); } } if (OGR_F_GetStyleString($hFeature) != NULL) { printf(" Style = %s\n", OGR_F_GetStyleString($hFeature)); } if (OGR_F_GetGeometryRef($hFeature) != NULL) { OGR_G_DumpReadable(OGR_F_GetGeometryRef($hFeature)); } printf("\n"); }
function add_attributes_to_db($src_feature, $feature_id, $fk_col_name) { $success = false; $num_fields = OGR_F_GetFieldCount($src_feature); $sql_str = "INSERT INTO " . $this->attr_table_name . "(" . $fk_col_name . ", "; // append all field names to the // sql string first for ($i = 0; $i < $num_fields; $i++) { $field_defn = OGR_FD_GetFieldDefn(OGR_L_GetLayerDefn($this->ogr_src_layer), $i); $f_name = strtolower(OGR_Fld_GetNameRef($field_defn)); $sql_str .= $f_name; if ($i < $num_fields - 1) { $sql_str .= ", "; } } $sql_str .= ") VALUES ( " . $feature_id . ", "; // append field values for ($i = 0; $i < $num_fields; $i++) { $field_defn = OGR_FD_GetFieldDefn(OGR_L_GetLayerDefn($this->ogr_src_layer), $i); $f_name = strtolower(OGR_Fld_GetNameRef($field_defn)); $f_type = OGR_Fld_GetType($field_defn); $f_value = OGR_F_GetFieldAsString($src_feature, $i); // surround the value with quotes if // the type is string if ($f_type == OFTString) { $sql_str .= "'" . str_replace("'", "''", $f_value) . "'"; } else { if ($f_value == "") { $sql_str .= "NULL"; } else { $sql_str .= $f_value; } } if ($i < $num_fields - 1) { $sql_str .= ", "; } } $sql_str .= ")"; $this->dbconn->connect(); $result = pg_query($this->dbconn->conn, $sql_str); if (!$result) { echo "An error occurred while executing the query: " . $sql_str . pg_last_error($this->dbconn->conn) . "\n\n"; } else { $success = true; } $this->dbconn->disconnect(); return $success; }
$f_name = strtolower(OGR_Fld_GetNameRef($field_defn)); $f_type = OGR_Fld_GetType($field_defn); if ($f_type == OFTString) { $f_type = "string"; } else { if ($f_type == OFTInteger) { $f_type = "int"; } else { if ($f_type == OFTReal) { $f_type = "double"; } else { $f_type = "unknown"; } } } $f_value = OGR_F_GetFieldAsString($dst_feature, $i); echo $f_name . ": " . $f_value . "; "; } echo "<br>"; } } //echo OGRGetDriverCount(); //for( $iDriver = 0; $iDriver < OGRGetDriverCount(); $iDriver++ ) //{ // printf( " -> %s<br>", OGR_DR_GetName(OGRGetDriver($iDriver)) ); //} } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>