00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114 #ifndef _OGR_API_H_INCLUDED
00115 #define _OGR_API_H_INCLUDED
00116
00126 #include "ogr_core.h"
00127
00128 CPL_C_START
00129
00130
00131
00132
00133 typedef void *OGRGeometryH;
00134
00135 #ifndef _DEFINED_OGRSpatialReferenceH
00136 #define _DEFINED_OGRSpatialReferenceH
00137
00138 typedef void *OGRSpatialReferenceH;
00139 typedef void *OGRCoordinateTransformationH;
00140
00141 #endif
00142
00143 struct _CPLXMLNode;
00144
00145
00146
00147 OGRErr CPL_DLL OGR_G_CreateFromWkb( unsigned char *, OGRSpatialReferenceH,
00148 OGRGeometryH *, int );
00149 OGRErr CPL_DLL OGR_G_CreateFromWkt( char **, OGRSpatialReferenceH,
00150 OGRGeometryH * );
00151 void CPL_DLL OGR_G_DestroyGeometry( OGRGeometryH );
00152 OGRGeometryH CPL_DLL OGR_G_CreateGeometry( OGRwkbGeometryType );
00153
00154 int CPL_DLL OGR_G_GetDimension( OGRGeometryH );
00155 int CPL_DLL OGR_G_GetCoordinateDimension( OGRGeometryH );
00156 void CPL_DLL OGR_G_SetCoordinateDimension( OGRGeometryH, int );
00157 OGRGeometryH CPL_DLL OGR_G_Clone( OGRGeometryH );
00158 void CPL_DLL OGR_G_GetEnvelope( OGRGeometryH, OGREnvelope * );
00159 OGRErr CPL_DLL OGR_G_ImportFromWkb( OGRGeometryH, unsigned char *, int );
00160 OGRErr CPL_DLL OGR_G_ExportToWkb( OGRGeometryH, OGRwkbByteOrder, unsigned char*);
00161 int CPL_DLL OGR_G_WkbSize( OGRGeometryH hGeom );
00162 OGRErr CPL_DLL OGR_G_ImportFromWkt( OGRGeometryH, char ** );
00163 OGRErr CPL_DLL OGR_G_ExportToWkt( OGRGeometryH, char ** );
00164 OGRwkbGeometryType CPL_DLL OGR_G_GetGeometryType( OGRGeometryH );
00165 const char CPL_DLL *OGR_G_GetGeometryName( OGRGeometryH );
00166 void CPL_DLL OGR_G_DumpReadable( OGRGeometryH, FILE *, const char * );
00167 void CPL_DLL OGR_G_FlattenTo2D( OGRGeometryH );
00168 void CPL_DLL OGR_G_CloseRings( OGRGeometryH );
00169
00170 OGRGeometryH CPL_DLL OGR_G_CreateFromGML( const char * );
00171 char CPL_DLL *OGR_G_ExportToGML( OGRGeometryH );
00172
00173 #if defined(_CPL_MINIXML_H_INCLUDED)
00174 OGRGeometryH CPL_DLL OGR_G_CreateFromGMLTree( const CPLXMLNode * );
00175 CPLXMLNode CPL_DLL *OGR_G_ExportToGMLTree( OGRGeometryH );
00176 CPLXMLNode CPL_DLL *OGR_G_ExportEnvelopeToGMLTree( OGRGeometryH );
00177 #endif
00178
00179 void CPL_DLL OGR_G_AssignSpatialReference( OGRGeometryH,
00180 OGRSpatialReferenceH );
00181 OGRSpatialReferenceH CPL_DLL OGR_G_GetSpatialReference( OGRGeometryH );
00182 OGRErr CPL_DLL OGR_G_Transform( OGRGeometryH, OGRCoordinateTransformationH );
00183 OGRErr CPL_DLL OGR_G_TransformTo( OGRGeometryH, OGRSpatialReferenceH );
00184
00185 int CPL_DLL OGR_G_Intersects( OGRGeometryH, OGRGeometryH );
00186 int CPL_DLL OGR_G_Equals( OGRGeometryH, OGRGeometryH );
00187 int CPL_DLL OGR_G_Disjoint( OGRGeometryH, OGRGeometryH );
00188 int CPL_DLL OGR_G_Touches( OGRGeometryH, OGRGeometryH );
00189 int CPL_DLL OGR_G_Crosses( OGRGeometryH, OGRGeometryH );
00190 int CPL_DLL OGR_G_Within( OGRGeometryH, OGRGeometryH );
00191 int CPL_DLL OGR_G_Contains( OGRGeometryH, OGRGeometryH );
00192 int CPL_DLL OGR_G_Overlaps( OGRGeometryH, OGRGeometryH );
00193
00194 OGRGeometryH CPL_DLL OGR_G_GetBoundary( OGRGeometryH );
00195 OGRGeometryH CPL_DLL OGR_G_ConvexHull( OGRGeometryH );
00196 OGRGeometryH CPL_DLL OGR_G_Buffer( OGRGeometryH, double, int );
00197 OGRGeometryH CPL_DLL OGR_G_Intersection( OGRGeometryH, OGRGeometryH );
00198 OGRGeometryH CPL_DLL OGR_G_Union( OGRGeometryH, OGRGeometryH );
00199 OGRGeometryH CPL_DLL OGR_G_Difference( OGRGeometryH, OGRGeometryH );
00200 OGRGeometryH CPL_DLL OGR_G_SymmetricDifference( OGRGeometryH, OGRGeometryH );
00201 double CPL_DLL OGR_G_Distance( OGRGeometryH, OGRGeometryH );
00202
00203 double CPL_DLL OGR_G_GetArea( OGRGeometryH );
00204 int CPL_DLL OGR_G_Centroid( OGRGeometryH, OGRGeometryH );
00205
00206 void CPL_DLL OGR_G_Empty( OGRGeometryH );
00207
00208
00209 int CPL_DLL OGR_G_Intersect( OGRGeometryH, OGRGeometryH );
00210 int CPL_DLL OGR_G_Equal( OGRGeometryH, OGRGeometryH );
00211
00212
00213 int CPL_DLL OGR_G_GetPointCount( OGRGeometryH );
00214 double CPL_DLL OGR_G_GetX( OGRGeometryH, int );
00215 double CPL_DLL OGR_G_GetY( OGRGeometryH, int );
00216 double CPL_DLL OGR_G_GetZ( OGRGeometryH, int );
00217 void CPL_DLL OGR_G_GetPoint( OGRGeometryH, int iPoint,
00218 double *, double *, double * );
00219 void CPL_DLL OGR_G_SetPoint( OGRGeometryH, int iPoint,
00220 double, double, double );
00221 void CPL_DLL OGR_G_SetPoint_2D( OGRGeometryH, int iPoint,
00222 double, double );
00223 void CPL_DLL OGR_G_AddPoint( OGRGeometryH, double, double, double );
00224 void CPL_DLL OGR_G_AddPoint_2D( OGRGeometryH, double, double );
00225
00226
00227
00228 int CPL_DLL OGR_G_GetGeometryCount( OGRGeometryH );
00229 OGRGeometryH CPL_DLL OGR_G_GetGeometryRef( OGRGeometryH, int );
00230 OGRErr CPL_DLL OGR_G_AddGeometry( OGRGeometryH, OGRGeometryH );
00231 OGRErr CPL_DLL OGR_G_AddGeometryDirectly( OGRGeometryH, OGRGeometryH );
00232 OGRErr CPL_DLL OGR_G_RemoveGeometry( OGRGeometryH, int, int );
00233
00234 OGRGeometryH CPL_DLL OGRBuildPolygonFromEdges( OGRGeometryH hLinesAsCollection,
00235 int bBestEffort,
00236 int bAutoClose,
00237 double dfTolerance,
00238 OGRErr * peErr );
00239
00240 OGRErr CPL_DLL OGRSetGenerate_DB2_V72_BYTE_ORDER(
00241 int bGenerate_DB2_V72_BYTE_ORDER );
00242
00243 int CPL_DLL OGRGetGenerate_DB2_V72_BYTE_ORDER(void);
00244
00245
00246
00247
00248
00249 typedef void *OGRFieldDefnH;
00250 typedef void *OGRFeatureDefnH;
00251 typedef void *OGRFeatureH;
00252
00253
00254
00255 OGRFieldDefnH CPL_DLL OGR_Fld_Create( const char *, OGRFieldType );
00256 void CPL_DLL OGR_Fld_Destroy( OGRFieldDefnH );
00257
00258 void CPL_DLL OGR_Fld_SetName( OGRFieldDefnH, const char * );
00259 const char CPL_DLL *OGR_Fld_GetNameRef( OGRFieldDefnH );
00260 OGRFieldType CPL_DLL OGR_Fld_GetType( OGRFieldDefnH );
00261 void CPL_DLL OGR_Fld_SetType( OGRFieldDefnH, OGRFieldType );
00262 OGRJustification CPL_DLL OGR_Fld_GetJustify( OGRFieldDefnH );
00263 void CPL_DLL OGR_Fld_SetJustify( OGRFieldDefnH, OGRJustification );
00264 int CPL_DLL OGR_Fld_GetWidth( OGRFieldDefnH );
00265 void CPL_DLL OGR_Fld_SetWidth( OGRFieldDefnH, int );
00266 int CPL_DLL OGR_Fld_GetPrecision( OGRFieldDefnH );
00267 void CPL_DLL OGR_Fld_SetPrecision( OGRFieldDefnH, int );
00268 void CPL_DLL OGR_Fld_Set( OGRFieldDefnH, const char *, OGRFieldType,
00269 int, int, OGRJustification );
00270
00271 const char CPL_DLL *OGR_GetFieldTypeName( OGRFieldType );
00272
00273
00274
00275 OGRFeatureDefnH CPL_DLL OGR_FD_Create( const char * );
00276 void CPL_DLL OGR_FD_Destroy( OGRFeatureDefnH );
00277 const char CPL_DLL *OGR_FD_GetName( OGRFeatureDefnH );
00278 int CPL_DLL OGR_FD_GetFieldCount( OGRFeatureDefnH );
00279 OGRFieldDefnH CPL_DLL OGR_FD_GetFieldDefn( OGRFeatureDefnH, int );
00280 int CPL_DLL OGR_FD_GetFieldIndex( OGRFeatureDefnH, const char * );
00281 void CPL_DLL OGR_FD_AddFieldDefn( OGRFeatureDefnH, OGRFieldDefnH );
00282 OGRwkbGeometryType CPL_DLL OGR_FD_GetGeomType( OGRFeatureDefnH );
00283 void CPL_DLL OGR_FD_SetGeomType( OGRFeatureDefnH, OGRwkbGeometryType );
00284 int CPL_DLL OGR_FD_Reference( OGRFeatureDefnH );
00285 int CPL_DLL OGR_FD_Dereference( OGRFeatureDefnH );
00286 int CPL_DLL OGR_FD_GetReferenceCount( OGRFeatureDefnH );
00287
00288
00289
00290 OGRFeatureH CPL_DLL OGR_F_Create( OGRFeatureDefnH );
00291 void CPL_DLL OGR_F_Destroy( OGRFeatureH );
00292 OGRFeatureDefnH CPL_DLL OGR_F_GetDefnRef( OGRFeatureH );
00293
00294 OGRErr CPL_DLL OGR_F_SetGeometryDirectly( OGRFeatureH, OGRGeometryH );
00295 OGRErr CPL_DLL OGR_F_SetGeometry( OGRFeatureH, OGRGeometryH );
00296 OGRGeometryH CPL_DLL OGR_F_GetGeometryRef( OGRFeatureH );
00297 OGRFeatureH CPL_DLL OGR_F_Clone( OGRFeatureH );
00298 int CPL_DLL OGR_F_Equal( OGRFeatureH, OGRFeatureH );
00299
00300 int CPL_DLL OGR_F_GetFieldCount( OGRFeatureH );
00301 OGRFieldDefnH CPL_DLL OGR_F_GetFieldDefnRef( OGRFeatureH, int );
00302 int CPL_DLL OGR_F_GetFieldIndex( OGRFeatureH, const char * );
00303
00304 int CPL_DLL OGR_F_IsFieldSet( OGRFeatureH, int );
00305 void CPL_DLL OGR_F_UnsetField( OGRFeatureH, int );
00306 OGRField CPL_DLL *OGR_F_GetRawFieldRef( OGRFeatureH, int );
00307
00308 int CPL_DLL OGR_F_GetFieldAsInteger( OGRFeatureH, int );
00309 double CPL_DLL OGR_F_GetFieldAsDouble( OGRFeatureH, int );
00310 const char CPL_DLL *OGR_F_GetFieldAsString( OGRFeatureH, int );
00311 const int CPL_DLL *OGR_F_GetFieldAsIntegerList( OGRFeatureH, int, int * );
00312 const double CPL_DLL *OGR_F_GetFieldAsDoubleList( OGRFeatureH, int, int * );
00313 char CPL_DLL **OGR_F_GetFieldAsStringList( OGRFeatureH, int );
00314
00315 void CPL_DLL OGR_F_SetFieldInteger( OGRFeatureH, int, int );
00316 void CPL_DLL OGR_F_SetFieldDouble( OGRFeatureH, int, double );
00317 void CPL_DLL OGR_F_SetFieldString( OGRFeatureH, int, const char * );
00318 void CPL_DLL OGR_F_SetFieldIntegerList( OGRFeatureH, int, int, int * );
00319 void CPL_DLL OGR_F_SetFieldDoubleList( OGRFeatureH, int, int, double * );
00320 void CPL_DLL OGR_F_SetFieldStringList( OGRFeatureH, int, char ** );
00321 void CPL_DLL OGR_F_SetFieldRaw( OGRFeatureH, int, OGRField * );
00322
00323 long CPL_DLL OGR_F_GetFID( OGRFeatureH );
00324 OGRErr CPL_DLL OGR_F_SetFID( OGRFeatureH, long );
00325 void CPL_DLL OGR_F_DumpReadable( OGRFeatureH, FILE * );
00326 OGRErr CPL_DLL OGR_F_SetFrom( OGRFeatureH, OGRFeatureH, int );
00327
00328 const char CPL_DLL *OGR_F_GetStyleString( OGRFeatureH );
00329 void CPL_DLL OGR_F_SetStyleString( OGRFeatureH, const char * );
00330
00331
00332
00333
00334
00335 typedef void *OGRLayerH;
00336 typedef void *OGRDataSourceH;
00337 typedef void *OGRSFDriverH;
00338
00339
00340
00341 OGRGeometryH CPL_DLL OGR_L_GetSpatialFilter( OGRLayerH );
00342 void CPL_DLL OGR_L_SetSpatialFilter( OGRLayerH, OGRGeometryH );
00343 void CPL_DLL OGR_L_SetSpatialFilterRect( OGRLayerH,
00344 double, double, double, double );
00345 OGRErr CPL_DLL OGR_L_SetAttributeFilter( OGRLayerH, const char * );
00346 void CPL_DLL OGR_L_ResetReading( OGRLayerH );
00347 OGRFeatureH CPL_DLL OGR_L_GetNextFeature( OGRLayerH );
00348 OGRErr CPL_DLL OGR_L_SetNextByIndex( OGRLayerH, long );
00349 OGRFeatureH CPL_DLL OGR_L_GetFeature( OGRLayerH, long );
00350 OGRErr CPL_DLL OGR_L_SetFeature( OGRLayerH, OGRFeatureH );
00351 OGRErr CPL_DLL OGR_L_CreateFeature( OGRLayerH, OGRFeatureH );
00352 OGRErr CPL_DLL OGR_L_DeleteFeature( OGRLayerH, long );
00353 OGRFeatureDefnH CPL_DLL OGR_L_GetLayerDefn( OGRLayerH );
00354 OGRSpatialReferenceH CPL_DLL OGR_L_GetSpatialRef( OGRLayerH );
00355 int CPL_DLL OGR_L_GetFeatureCount( OGRLayerH, int );
00356 OGRErr CPL_DLL OGR_L_GetExtent( OGRLayerH, OGREnvelope *, int );
00357 int CPL_DLL OGR_L_TestCapability( OGRLayerH, const char * );
00358 OGRErr CPL_DLL OGR_L_CreateField( OGRLayerH, OGRFieldDefnH, int );
00359 OGRErr CPL_DLL OGR_L_StartTransaction( OGRLayerH );
00360 OGRErr CPL_DLL OGR_L_CommitTransaction( OGRLayerH );
00361 OGRErr CPL_DLL OGR_L_RollbackTransaction( OGRLayerH );
00362 int CPL_DLL OGR_L_Reference( OGRLayerH );
00363 int CPL_DLL OGR_L_Dereference( OGRLayerH );
00364 int CPL_DLL OGR_L_GetRefCount( OGRLayerH );
00365 OGRErr CPL_DLL OGR_L_SyncToDisk( OGRLayerH );
00366 GIntBig CPL_DLL OGR_L_GetFeaturesRead( OGRLayerH );
00367
00368
00369
00370 void CPL_DLL OGR_DS_Destroy( OGRDataSourceH );
00371 const char CPL_DLL *OGR_DS_GetName( OGRDataSourceH );
00372 int CPL_DLL OGR_DS_GetLayerCount( OGRDataSourceH );
00373 OGRLayerH CPL_DLL OGR_DS_GetLayer( OGRDataSourceH, int );
00374 OGRLayerH CPL_DLL OGR_DS_GetLayerByName( OGRDataSourceH, const char * );
00375 OGRErr CPL_DLL OGR_DS_DeleteLayer( OGRDataSourceH, int );
00376 OGRLayerH CPL_DLL OGR_DS_CreateLayer( OGRDataSourceH, const char *,
00377 OGRSpatialReferenceH, OGRwkbGeometryType,
00378 char ** );
00379 OGRLayerH CPL_DLL OGR_DS_CopyLayer( OGRDataSourceH, OGRLayerH, const char *,
00380 char ** );
00381 int CPL_DLL OGR_DS_TestCapability( OGRDataSourceH, const char * );
00382 OGRLayerH CPL_DLL OGR_DS_ExecuteSQL( OGRDataSourceH, const char *,
00383 OGRGeometryH, const char * );
00384 void CPL_DLL OGR_DS_ReleaseResultSet( OGRDataSourceH, OGRLayerH );
00385 int CPL_DLL OGR_DS_Reference( OGRDataSourceH );
00386 int CPL_DLL OGR_DS_Dereference( OGRDataSourceH );
00387 int CPL_DLL OGR_DS_GetRefCount( OGRDataSourceH );
00388 int CPL_DLL OGR_DS_GetSummaryRefCount( OGRDataSourceH );
00389 OGRErr CPL_DLL OGR_DS_SyncToDisk( OGRDataSourceH );
00390
00391
00392
00393 const char CPL_DLL *OGR_Dr_GetName( OGRSFDriverH );
00394 OGRDataSourceH CPL_DLL OGR_Dr_Open( OGRSFDriverH, const char *, int );
00395 int CPL_DLL OGR_Dr_TestCapability( OGRSFDriverH, const char * );
00396 OGRDataSourceH CPL_DLL OGR_Dr_CreateDataSource( OGRSFDriverH, const char *,
00397 char ** );
00398 OGRDataSourceH CPL_DLL OGR_Dr_CopyDataSource( OGRSFDriverH, OGRDataSourceH,
00399 const char *, char ** );
00400 OGRErr CPL_DLL OGR_Dr_DeleteDataSource( OGRSFDriverH, const char * );
00401
00402
00403
00404 OGRDataSourceH CPL_DLL OGROpen( const char *, int, OGRSFDriverH * );
00405 OGRDataSourceH CPL_DLL OGROpenShared( const char *, int, OGRSFDriverH * );
00406 OGRErr CPL_DLL OGRReleaseDataSource( OGRDataSourceH );
00407 void CPL_DLL OGRRegisterDriver( OGRSFDriverH );
00408 int CPL_DLL OGRGetDriverCount(void);
00409 OGRSFDriverH CPL_DLL OGRGetDriver( int );
00410 OGRSFDriverH CPL_DLL OGRGetDriverByName( const char * );
00411 int CPL_DLL OGRGetOpenDSCount(void);
00412 OGRDataSourceH CPL_DLL OGRGetOpenDS( int iDS );
00413
00414
00415
00416 void CPL_DLL OGRRegisterAll(void);
00417
00418 CPL_C_END
00419
00420 #endif
00421
00422