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
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 #ifndef _OGR_API_H_INCLUDED
00136 #define _OGR_API_H_INCLUDED
00137
00147 #include "ogr_core.h"
00148
00149 CPL_C_START
00150
00151
00152
00153
00154 typedef void *OGRGeometryH;
00155
00156 #ifndef _DEFINED_OGRSpatialReferenceH
00157 #define _DEFINED_OGRSpatialReferenceH
00158
00159 typedef void *OGRSpatialReferenceH;
00160 typedef void *OGRCoordinateTransformationH;
00161
00162 #endif
00163
00164 struct _CPLXMLNode;
00165
00166
00167
00168 OGRErr CPL_DLL OGR_G_CreateFromWkb( unsigned char *, OGRSpatialReferenceH,
00169 OGRGeometryH *, int );
00170 OGRErr CPL_DLL OGR_G_CreateFromWkt( char **, OGRSpatialReferenceH,
00171 OGRGeometryH * );
00172 void CPL_DLL OGR_G_DestroyGeometry( OGRGeometryH );
00173 OGRGeometryH CPL_DLL OGR_G_CreateGeometry( OGRwkbGeometryType );
00174
00175 int CPL_DLL OGR_G_GetDimension( OGRGeometryH );
00176 int CPL_DLL OGR_G_GetCoordinateDimension( OGRGeometryH );
00177 void CPL_DLL OGR_G_SetCoordinateDimension( OGRGeometryH, int );
00178 OGRGeometryH CPL_DLL OGR_G_Clone( OGRGeometryH );
00179 void CPL_DLL OGR_G_GetEnvelope( OGRGeometryH, OGREnvelope * );
00180 OGRErr CPL_DLL OGR_G_ImportFromWkb( OGRGeometryH, unsigned char *, int );
00181 OGRErr CPL_DLL OGR_G_ExportToWkb( OGRGeometryH, OGRwkbByteOrder, unsigned char*);
00182 int CPL_DLL OGR_G_WkbSize( OGRGeometryH hGeom );
00183 OGRErr CPL_DLL OGR_G_ImportFromWkt( OGRGeometryH, char ** );
00184 OGRErr CPL_DLL OGR_G_ExportToWkt( OGRGeometryH, char ** );
00185 OGRwkbGeometryType CPL_DLL OGR_G_GetGeometryType( OGRGeometryH );
00186 const char CPL_DLL *OGR_G_GetGeometryName( OGRGeometryH );
00187 void CPL_DLL OGR_G_DumpReadable( OGRGeometryH, FILE *, const char * );
00188 void CPL_DLL OGR_G_FlattenTo2D( OGRGeometryH );
00189 void CPL_DLL OGR_G_CloseRings( OGRGeometryH );
00190
00191 OGRGeometryH CPL_DLL OGR_G_CreateFromGML( const char * );
00192 char CPL_DLL *OGR_G_ExportToGML( OGRGeometryH );
00193
00194 #if defined(_CPL_MINIXML_H_INCLUDED)
00195 OGRGeometryH CPL_DLL OGR_G_CreateFromGMLTree( const CPLXMLNode * );
00196 CPLXMLNode CPL_DLL *OGR_G_ExportToGMLTree( OGRGeometryH );
00197 CPLXMLNode CPL_DLL *OGR_G_ExportEnvelopeToGMLTree( OGRGeometryH );
00198 #endif
00199
00200 void CPL_DLL OGR_G_AssignSpatialReference( OGRGeometryH,
00201 OGRSpatialReferenceH );
00202 OGRSpatialReferenceH CPL_DLL OGR_G_GetSpatialReference( OGRGeometryH );
00203 OGRErr CPL_DLL OGR_G_Transform( OGRGeometryH, OGRCoordinateTransformationH );
00204 OGRErr CPL_DLL OGR_G_TransformTo( OGRGeometryH, OGRSpatialReferenceH );
00205
00206 int CPL_DLL OGR_G_Intersects( OGRGeometryH, OGRGeometryH );
00207 int CPL_DLL OGR_G_Equals( OGRGeometryH, OGRGeometryH );
00208 int CPL_DLL OGR_G_Disjoint( OGRGeometryH, OGRGeometryH );
00209 int CPL_DLL OGR_G_Touches( OGRGeometryH, OGRGeometryH );
00210 int CPL_DLL OGR_G_Crosses( OGRGeometryH, OGRGeometryH );
00211 int CPL_DLL OGR_G_Within( OGRGeometryH, OGRGeometryH );
00212 int CPL_DLL OGR_G_Contains( OGRGeometryH, OGRGeometryH );
00213 int CPL_DLL OGR_G_Overlaps( OGRGeometryH, OGRGeometryH );
00214
00215 OGRGeometryH CPL_DLL OGR_G_GetBoundary( OGRGeometryH );
00216 OGRGeometryH CPL_DLL OGR_G_ConvexHull( OGRGeometryH );
00217 OGRGeometryH CPL_DLL OGR_G_Buffer( OGRGeometryH, double, int );
00218 OGRGeometryH CPL_DLL OGR_G_Intersection( OGRGeometryH, OGRGeometryH );
00219 OGRGeometryH CPL_DLL OGR_G_Union( OGRGeometryH, OGRGeometryH );
00220 OGRGeometryH CPL_DLL OGR_G_Difference( OGRGeometryH, OGRGeometryH );
00221 OGRGeometryH CPL_DLL OGR_G_SymmetricDifference( OGRGeometryH, OGRGeometryH );
00222 double CPL_DLL OGR_G_Distance( OGRGeometryH, OGRGeometryH );
00223
00224 double CPL_DLL OGR_G_GetArea( OGRGeometryH );
00225 int CPL_DLL OGR_G_Centroid( OGRGeometryH, OGRGeometryH );
00226
00227 void CPL_DLL OGR_G_Empty( OGRGeometryH );
00228
00229
00230 int CPL_DLL OGR_G_Intersect( OGRGeometryH, OGRGeometryH );
00231 int CPL_DLL OGR_G_Equal( OGRGeometryH, OGRGeometryH );
00232
00233
00234 int CPL_DLL OGR_G_GetPointCount( OGRGeometryH );
00235 double CPL_DLL OGR_G_GetX( OGRGeometryH, int );
00236 double CPL_DLL OGR_G_GetY( OGRGeometryH, int );
00237 double CPL_DLL OGR_G_GetZ( OGRGeometryH, int );
00238 void CPL_DLL OGR_G_GetPoint( OGRGeometryH, int iPoint,
00239 double *, double *, double * );
00240 void CPL_DLL OGR_G_SetPoint( OGRGeometryH, int iPoint,
00241 double, double, double );
00242 void CPL_DLL OGR_G_SetPoint_2D( OGRGeometryH, int iPoint,
00243 double, double );
00244 void CPL_DLL OGR_G_AddPoint( OGRGeometryH, double, double, double );
00245 void CPL_DLL OGR_G_AddPoint_2D( OGRGeometryH, double, double );
00246
00247
00248
00249 int CPL_DLL OGR_G_GetGeometryCount( OGRGeometryH );
00250 OGRGeometryH CPL_DLL OGR_G_GetGeometryRef( OGRGeometryH, int );
00251 OGRErr CPL_DLL OGR_G_AddGeometry( OGRGeometryH, OGRGeometryH );
00252 OGRErr CPL_DLL OGR_G_AddGeometryDirectly( OGRGeometryH, OGRGeometryH );
00253 OGRErr CPL_DLL OGR_G_RemoveGeometry( OGRGeometryH, int, int );
00254
00255 OGRGeometryH CPL_DLL OGRBuildPolygonFromEdges( OGRGeometryH hLinesAsCollection,
00256 int bBestEffort,
00257 int bAutoClose,
00258 double dfTolerance,
00259 OGRErr * peErr );
00260
00261 OGRErr CPL_DLL OGRSetGenerate_DB2_V72_BYTE_ORDER(
00262 int bGenerate_DB2_V72_BYTE_ORDER );
00263
00264 int CPL_DLL OGRGetGenerate_DB2_V72_BYTE_ORDER(void);
00265
00266
00267
00268
00269
00270 typedef void *OGRFieldDefnH;
00271 typedef void *OGRFeatureDefnH;
00272 typedef void *OGRFeatureH;
00273
00274
00275
00276 OGRFieldDefnH CPL_DLL OGR_Fld_Create( const char *, OGRFieldType );
00277 void CPL_DLL OGR_Fld_Destroy( OGRFieldDefnH );
00278
00279 void CPL_DLL OGR_Fld_SetName( OGRFieldDefnH, const char * );
00280 const char CPL_DLL *OGR_Fld_GetNameRef( OGRFieldDefnH );
00281 OGRFieldType CPL_DLL OGR_Fld_GetType( OGRFieldDefnH );
00282 void CPL_DLL OGR_Fld_SetType( OGRFieldDefnH, OGRFieldType );
00283 OGRJustification CPL_DLL OGR_Fld_GetJustify( OGRFieldDefnH );
00284 void CPL_DLL OGR_Fld_SetJustify( OGRFieldDefnH, OGRJustification );
00285 int CPL_DLL OGR_Fld_GetWidth( OGRFieldDefnH );
00286 void CPL_DLL OGR_Fld_SetWidth( OGRFieldDefnH, int );
00287 int CPL_DLL OGR_Fld_GetPrecision( OGRFieldDefnH );
00288 void CPL_DLL OGR_Fld_SetPrecision( OGRFieldDefnH, int );
00289 void CPL_DLL OGR_Fld_Set( OGRFieldDefnH, const char *, OGRFieldType,
00290 int, int, OGRJustification );
00291
00292 const char CPL_DLL *OGR_GetFieldTypeName( OGRFieldType );
00293
00294
00295
00296 OGRFeatureDefnH CPL_DLL OGR_FD_Create( const char * );
00297 void CPL_DLL OGR_FD_Destroy( OGRFeatureDefnH );
00298 void CPL_DLL OGR_FD_Release( OGRFeatureDefnH );
00299 const char CPL_DLL *OGR_FD_GetName( OGRFeatureDefnH );
00300 int CPL_DLL OGR_FD_GetFieldCount( OGRFeatureDefnH );
00301 OGRFieldDefnH CPL_DLL OGR_FD_GetFieldDefn( OGRFeatureDefnH, int );
00302 int CPL_DLL OGR_FD_GetFieldIndex( OGRFeatureDefnH, const char * );
00303 void CPL_DLL OGR_FD_AddFieldDefn( OGRFeatureDefnH, OGRFieldDefnH );
00304 OGRwkbGeometryType CPL_DLL OGR_FD_GetGeomType( OGRFeatureDefnH );
00305 void CPL_DLL OGR_FD_SetGeomType( OGRFeatureDefnH, OGRwkbGeometryType );
00306 int CPL_DLL OGR_FD_Reference( OGRFeatureDefnH );
00307 int CPL_DLL OGR_FD_Dereference( OGRFeatureDefnH );
00308 int CPL_DLL OGR_FD_GetReferenceCount( OGRFeatureDefnH );
00309
00310
00311
00312 OGRFeatureH CPL_DLL OGR_F_Create( OGRFeatureDefnH );
00313 void CPL_DLL OGR_F_Destroy( OGRFeatureH );
00314 OGRFeatureDefnH CPL_DLL OGR_F_GetDefnRef( OGRFeatureH );
00315
00316 OGRErr CPL_DLL OGR_F_SetGeometryDirectly( OGRFeatureH, OGRGeometryH );
00317 OGRErr CPL_DLL OGR_F_SetGeometry( OGRFeatureH, OGRGeometryH );
00318 OGRGeometryH CPL_DLL OGR_F_GetGeometryRef( OGRFeatureH );
00319 OGRFeatureH CPL_DLL OGR_F_Clone( OGRFeatureH );
00320 int CPL_DLL OGR_F_Equal( OGRFeatureH, OGRFeatureH );
00321
00322 int CPL_DLL OGR_F_GetFieldCount( OGRFeatureH );
00323 OGRFieldDefnH CPL_DLL OGR_F_GetFieldDefnRef( OGRFeatureH, int );
00324 int CPL_DLL OGR_F_GetFieldIndex( OGRFeatureH, const char * );
00325
00326 int CPL_DLL OGR_F_IsFieldSet( OGRFeatureH, int );
00327 void CPL_DLL OGR_F_UnsetField( OGRFeatureH, int );
00328 OGRField CPL_DLL *OGR_F_GetRawFieldRef( OGRFeatureH, int );
00329
00330 int CPL_DLL OGR_F_GetFieldAsInteger( OGRFeatureH, int );
00331 double CPL_DLL OGR_F_GetFieldAsDouble( OGRFeatureH, int );
00332 const char CPL_DLL *OGR_F_GetFieldAsString( OGRFeatureH, int );
00333 const int CPL_DLL *OGR_F_GetFieldAsIntegerList( OGRFeatureH, int, int * );
00334 const double CPL_DLL *OGR_F_GetFieldAsDoubleList( OGRFeatureH, int, int * );
00335 char CPL_DLL **OGR_F_GetFieldAsStringList( OGRFeatureH, int );
00336 GByte CPL_DLL *OGR_F_GetFieldAsBinary( OGRFeatureH, int, int * );
00337 int CPL_DLL OGR_F_GetFieldAsDateTime( OGRFeatureH, int, int *, int *, int *,
00338 int *, int *, int *, int * );
00339
00340 void CPL_DLL OGR_F_SetFieldInteger( OGRFeatureH, int, int );
00341 void CPL_DLL OGR_F_SetFieldDouble( OGRFeatureH, int, double );
00342 void CPL_DLL OGR_F_SetFieldString( OGRFeatureH, int, const char * );
00343 void CPL_DLL OGR_F_SetFieldIntegerList( OGRFeatureH, int, int, int * );
00344 void CPL_DLL OGR_F_SetFieldDoubleList( OGRFeatureH, int, int, double * );
00345 void CPL_DLL OGR_F_SetFieldStringList( OGRFeatureH, int, char ** );
00346 void CPL_DLL OGR_F_SetFieldRaw( OGRFeatureH, int, OGRField * );
00347 void CPL_DLL OGR_F_SetFieldBinary( OGRFeatureH, int, int, GByte * );
00348 void CPL_DLL OGR_F_SetFieldDateTime( OGRFeatureH, int,
00349 int, int, int, int, int, int, int );
00350
00351 long CPL_DLL OGR_F_GetFID( OGRFeatureH );
00352 OGRErr CPL_DLL OGR_F_SetFID( OGRFeatureH, long );
00353 void CPL_DLL OGR_F_DumpReadable( OGRFeatureH, FILE * );
00354 OGRErr CPL_DLL OGR_F_SetFrom( OGRFeatureH, OGRFeatureH, int );
00355
00356 const char CPL_DLL *OGR_F_GetStyleString( OGRFeatureH );
00357 void CPL_DLL OGR_F_SetStyleString( OGRFeatureH, const char * );
00358 void CPL_DLL OGR_F_SetStyleStringDirectly( OGRFeatureH, char * );
00359
00360
00361
00362
00363
00364 typedef void *OGRLayerH;
00365 typedef void *OGRDataSourceH;
00366 typedef void *OGRSFDriverH;
00367
00368
00369
00370 OGRGeometryH CPL_DLL OGR_L_GetSpatialFilter( OGRLayerH );
00371 void CPL_DLL OGR_L_SetSpatialFilter( OGRLayerH, OGRGeometryH );
00372 void CPL_DLL OGR_L_SetSpatialFilterRect( OGRLayerH,
00373 double, double, double, double );
00374 OGRErr CPL_DLL OGR_L_SetAttributeFilter( OGRLayerH, const char * );
00375 void CPL_DLL OGR_L_ResetReading( OGRLayerH );
00376 OGRFeatureH CPL_DLL OGR_L_GetNextFeature( OGRLayerH );
00377 OGRErr CPL_DLL OGR_L_SetNextByIndex( OGRLayerH, long );
00378 OGRFeatureH CPL_DLL OGR_L_GetFeature( OGRLayerH, long );
00379 OGRErr CPL_DLL OGR_L_SetFeature( OGRLayerH, OGRFeatureH );
00380 OGRErr CPL_DLL OGR_L_CreateFeature( OGRLayerH, OGRFeatureH );
00381 OGRErr CPL_DLL OGR_L_DeleteFeature( OGRLayerH, long );
00382 OGRFeatureDefnH CPL_DLL OGR_L_GetLayerDefn( OGRLayerH );
00383 OGRSpatialReferenceH CPL_DLL OGR_L_GetSpatialRef( OGRLayerH );
00384 int CPL_DLL OGR_L_GetFeatureCount( OGRLayerH, int );
00385 OGRErr CPL_DLL OGR_L_GetExtent( OGRLayerH, OGREnvelope *, int );
00386 int CPL_DLL OGR_L_TestCapability( OGRLayerH, const char * );
00387 OGRErr CPL_DLL OGR_L_CreateField( OGRLayerH, OGRFieldDefnH, int );
00388 OGRErr CPL_DLL OGR_L_StartTransaction( OGRLayerH );
00389 OGRErr CPL_DLL OGR_L_CommitTransaction( OGRLayerH );
00390 OGRErr CPL_DLL OGR_L_RollbackTransaction( OGRLayerH );
00391 int CPL_DLL OGR_L_Reference( OGRLayerH );
00392 int CPL_DLL OGR_L_Dereference( OGRLayerH );
00393 int CPL_DLL OGR_L_GetRefCount( OGRLayerH );
00394 OGRErr CPL_DLL OGR_L_SyncToDisk( OGRLayerH );
00395 GIntBig CPL_DLL OGR_L_GetFeaturesRead( OGRLayerH );
00396 const char CPL_DLL *OGR_L_GetFIDColumn( OGRLayerH );
00397 const char CPL_DLL *OGR_L_GetGeometryColumn( OGRLayerH );
00398
00399
00400 void CPL_DLL OGR_DS_Destroy( OGRDataSourceH );
00401 const char CPL_DLL *OGR_DS_GetName( OGRDataSourceH );
00402 int CPL_DLL OGR_DS_GetLayerCount( OGRDataSourceH );
00403 OGRLayerH CPL_DLL OGR_DS_GetLayer( OGRDataSourceH, int );
00404 OGRLayerH CPL_DLL OGR_DS_GetLayerByName( OGRDataSourceH, const char * );
00405 OGRErr CPL_DLL OGR_DS_DeleteLayer( OGRDataSourceH, int );
00406 OGRSFDriverH CPL_DLL OGR_DS_GetDriver( OGRDataSourceH );
00407 OGRLayerH CPL_DLL OGR_DS_CreateLayer( OGRDataSourceH, const char *,
00408 OGRSpatialReferenceH, OGRwkbGeometryType,
00409 char ** );
00410 OGRLayerH CPL_DLL OGR_DS_CopyLayer( OGRDataSourceH, OGRLayerH, const char *,
00411 char ** );
00412 int CPL_DLL OGR_DS_TestCapability( OGRDataSourceH, const char * );
00413 OGRLayerH CPL_DLL OGR_DS_ExecuteSQL( OGRDataSourceH, const char *,
00414 OGRGeometryH, const char * );
00415 void CPL_DLL OGR_DS_ReleaseResultSet( OGRDataSourceH, OGRLayerH );
00416 int CPL_DLL OGR_DS_Reference( OGRDataSourceH );
00417 int CPL_DLL OGR_DS_Dereference( OGRDataSourceH );
00418 int CPL_DLL OGR_DS_GetRefCount( OGRDataSourceH );
00419 int CPL_DLL OGR_DS_GetSummaryRefCount( OGRDataSourceH );
00420 OGRErr CPL_DLL OGR_DS_SyncToDisk( OGRDataSourceH );
00421
00422
00423
00424 const char CPL_DLL *OGR_Dr_GetName( OGRSFDriverH );
00425 OGRDataSourceH CPL_DLL OGR_Dr_Open( OGRSFDriverH, const char *, int );
00426 int CPL_DLL OGR_Dr_TestCapability( OGRSFDriverH, const char * );
00427 OGRDataSourceH CPL_DLL OGR_Dr_CreateDataSource( OGRSFDriverH, const char *,
00428 char ** );
00429 OGRDataSourceH CPL_DLL OGR_Dr_CopyDataSource( OGRSFDriverH, OGRDataSourceH,
00430 const char *, char ** );
00431 OGRErr CPL_DLL OGR_Dr_DeleteDataSource( OGRSFDriverH, const char * );
00432
00433
00434
00435 OGRDataSourceH CPL_DLL OGROpen( const char *, int, OGRSFDriverH * );
00436 OGRDataSourceH CPL_DLL OGROpenShared( const char *, int, OGRSFDriverH * );
00437 OGRErr CPL_DLL OGRReleaseDataSource( OGRDataSourceH );
00438 void CPL_DLL OGRRegisterDriver( OGRSFDriverH );
00439 int CPL_DLL OGRGetDriverCount(void);
00440 OGRSFDriverH CPL_DLL OGRGetDriver( int );
00441 OGRSFDriverH CPL_DLL OGRGetDriverByName( const char * );
00442 int CPL_DLL OGRGetOpenDSCount(void);
00443 OGRDataSourceH CPL_DLL OGRGetOpenDS( int iDS );
00444
00445
00446
00447 void CPL_DLL OGRRegisterAll(void);
00448 void CPL_DLL OGRCleanupAll(void);
00449
00450 CPL_C_END
00451
00452 #endif
00453
00454