00001
00066 #ifndef INC_MI32_RGNGEN_H
00067 #define INC_MI32_RGNGEN_H
00068
00069 #ifndef INC_MI32_STDDEFNS_H
00070 #include <mi32/stddefns.h>
00071 #endif
00072
00073 #ifndef GENERATING_DOXYGEN_OUTPUT
00074 class REGION2D;
00075 namespace RVC {
00076 class OBJITEM;
00077 }
00078 #endif // GENERATING_DOXYGEN_OUTPUT
00079
00080
00082 enum REGIONGENMETHOD {
00083 REGIONGENMETHOD_SelectedElements = 1,
00084 REGIONGENMETHOD_PolygonFitting = 2,
00085 REGIONGENMETHOD_BufferZone = 3,
00086 REGIONGENMETHOD_Viewshed = 4,
00087 REGIONGENMETHOD_Threshold = 5,
00088 REGIONGENMETHOD_Voronoi = 6,
00089 REGIONGENMETHOD_Basin = 7,
00090 REGIONGENMETHOD_FloodZone = 8,
00091 REGIONGENMETHOD_RasterCells = 9,
00092 REGIONGENMETHOD_TextureGrowth = 10,
00093 REGIONGENMETHOD_Cluster = 11,
00094 REGIONGENMETHOD_RasterExpression = 12,
00095 REGIONGENMETHOD_RasterTraceSolid = 13,
00096 REGIONGENMETHOD_RasterTraceBound = 14,
00097 };
00098
00099
00100 #define REGIONGEN_SelPolys REGIONGENMETHOD_SelectedElements
00101 #define REGIONGEN_PolyFit REGIONGENMETHOD_PolygonFitting
00102 #define REGIONGEN_BufZone REGIONGENMETHOD_BufferZone
00103 #define REGIONGEN_ViewShed REGIONGENMETHOD_Viewshed
00104 #define REGIONGEN_Threshold REGIONGENMETHOD_Threshold
00105 #define REGIONGEN_Voronoi REGIONGENMETHOD_Voronoi
00106 #define REGIONGEN_Basin REGIONGENMETHOD_Basin
00107 #define REGIONGEN_FloodZone REGIONGENMETHOD_FloodZone
00108 #define REGIONGEN_RasterCells REGIONGENMETHOD_RasterCells
00109 #define REGIONGEN_TextureGrowth REGIONGENMETHOD_TextureGrowth
00110 #define REGIONGEN_Cluster REGIONGENMETHOD_Cluster
00111 #define REGIONGEN_RasterExpression REGIONGENMETHOD_RasterExpression
00112 #define REGIONGEN_RasterTraceSolid REGIONGENMETHOD_RasterTraceSolid
00113 #define REGIONGEN_RasterTraceBound REGIONGENMETHOD_RasterTraceBound
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124 #define MP_sign_default TRUE
00125
00126 #define MP_iter_min 2
00127 #define MP_iter_default 5
00128 #define MP_iter_max 100
00129
00130 #define MP_weight_min 0.010
00131 #define MP_weight_default 0.618
00132 #define MP_weight_max 1.000
00133
00134 #define MP_factor_min 0.01
00135 #define MP_factor_default 0.50
00136 #define MP_factor_max 1.00
00137
00138
00139 #define HM_sign_default TRUE
00140
00141 #define HM_iter_min 2
00142 #define HM_iter_default 5
00143 #define HM_iter_max 100
00144
00145 #define HM_weight_min 0.010
00146 #define HM_weight_default 0.618
00147 #define HM_weight_max 1.000
00148
00149 #define HM_horiz_min 15
00150 #define HM_horiz_default 15
00151 #define HM_horiz_max 120
00152
00153 #define HM_vert_min 15
00154 #define HM_vert_default 15
00155 #define HM_vert_max 120
00156
00157 #define HM_percent_min 10.00
00158 #define HM_percent_default 95.00
00159 #define HM_percent_max 100.0
00160
00161
00162 #define FT_horiz_min 15
00163 #define FT_horiz_default 15
00164 #define FT_horiz_max 120
00165
00166 #define FT_vert_min 15
00167 #define FT_vert_default 15
00168 #define FT_vert_max 120
00169
00170 #define FT_height_min 0.01
00171 #define FT_height_default 0.50
00172 #define FT_height_max 1.00
00173
00174
00175 #define TS_sign_default TRUE
00176
00177 #define TS_iter_min 2
00178 #define TS_iter_default 5
00179 #define TS_iter_max 100
00180
00181 #define TS_weight_min 0.010
00182 #define TS_weight_default 0.618
00183 #define TS_weight_max 1.000
00184
00185 #define TS_percent_min 10.00
00186 #define TS_percent_default 95.00
00187 #define TS_percent_max 100.0
00188
00189 #define MC_sign_default TRUE
00190
00191 #define MC_iter_min 2
00192 #define MC_iter_default 5
00193 #define MC_iter_max 100
00194
00195 #define MC_weight_min 0.010
00196 #define MC_weight_default 0.618
00197 #define MC_weight_max 1.000
00198
00199 #define MC_percent_min 10.00
00200 #define MC_percent_default 95.00
00201 #define MC_percent_max 100.0
00202
00203 #define KN_mode_fixed 0
00204 #define KN_mode_adaptive 1
00205
00206 #define KN_grid_manual 0
00207 #define KN_grid_simple 1
00208 #define KN_grid_lscv 2
00209
00210 #define KN_horiz_min 4
00211 #define KN_horiz_default 15
00212 #define KN_horiz_max 120
00213
00214 #define KN_vert_min 4
00215 #define KN_vert_default 15
00216 #define KN_vert_max 120
00217
00218 #define KN_height_min 0.001
00219 #define KN_height_default 0.50
00220 #define KN_height_max 1.00
00221
00222
00223 struct MINPOLYPARM {
00224 INT32 sign;
00225 UINT32 iter;
00226 double weight;
00227 double factor;
00228 };
00229
00230 struct HARMONPARM {
00231 INT32 sign;
00232 UINT32 iter;
00233 double weight;
00234 UINT32 horiz;
00235 UINT32 vert;
00236 double percent;
00237 };
00238
00239 struct FOURIERPARM {
00240 UINT32 horiz;
00241 UINT32 vert;
00242 double height;
00243 };
00244
00245 struct TESSELPARM {
00246 INT32 sign;
00247 UINT32 iter;
00248 double weight;
00249 double percent;
00250 };
00251
00252 struct MINCONVEXPARM {
00253 INT32 sign;
00254 UINT32 iter;
00255 double weight;
00256 double percent;
00257 };
00258
00259 struct KERNELPARM {
00260 INT32 mode;
00261 INT32 grid;
00262 UINT32 horiz;
00263 UINT32 vert;
00264 double height;
00265 };
00266
00267 struct POLYFITPARM {
00268 UINT32 method;
00269 MINPOLYPARM minpoly;
00270 HARMONPARM harmon;
00271 FOURIERPARM fourier;
00272 TESSELPARM tessel;
00273 MINCONVEXPARM minconvex;
00274 KERNELPARM kernel;
00275 };
00276
00277
00278 #define RGNPFIT_MINPOLY 1
00279 #define RGNPFIT_HARMON 2
00280 #define RGNPFIT_FOURIER 3
00281 #define RGNPFIT_TESSEL 4
00282 #define RGNPFIT_MINCONVEX 5
00283 #define RGNPFIT_KERNEL 6
00284 #define RGNPFIT_COUNT 7
00285
00286 #define CLMETHOD_K_means 0
00287 #define CLMETHOD_FC_means 1
00288 #define CLMETHOD_MinDistAngle 2
00289 #define CLMETHOD_SelfOrganization 3
00290 #define CLMETHOD_AdaptiveResonance 4
00291 #define CLMETHOD_Isodata 5
00292 #define CLMETHOD_COUNT 6
00293
00294 struct KMEANS_PARM {
00295 DOUBLE MaxDistPercent;
00296 DOUBLE MaxMoveSteady;
00297 DOUBLE MinSteadyPct;
00298 INT32 MaxIterations;
00299 };
00300
00301 struct FCMEANS_PARM {
00302 DOUBLE MaxDistPercent;
00303 INT32 MaxIterations;
00304 };
00305
00306 struct MDANGLE_PARM {
00307 DOUBLE MaxAnglePercent;
00308 DOUBLE XPosPercent;
00309 DOUBLE YPosPercent;
00310 DOUBLE MaxMoveSteady;
00311 DOUBLE MinSteadyPct;
00312 INT32 MaxIterations;
00313 };
00314
00315 struct SELFORG_PARM {
00316 DOUBLE MaxDistPercent;
00317 DOUBLE MaxMoveSteady;
00318 DOUBLE MinSteadyPct;
00319 INT32 MaxIterations;
00320 };
00321
00322 struct ADRES_PARM {
00323 DOUBLE MaxDistPercent;
00324 INT32 MaxIterations;
00325 };
00326
00327 struct ISODATA_PARM {
00328 INT32 ReqClasses;
00329 INT32 MaxIterations;
00330 INT32 MinClusterCells;
00331 DOUBLE SplitMaxStdDev;
00332 DOUBLE CombineMinDist;
00333 DOUBLE ChainMinDist;
00334 };
00335
00336 struct CLASSIFY_PARM {
00337 UINT32 method;
00338 KMEANS_PARM kmeans;
00339 FCMEANS_PARM fcmeans;
00340 MDANGLE_PARM mdangle;
00341 SELFORG_PARM selforg;
00342 ADRES_PARM adres;
00343 ISODATA_PARM isodata;
00344 };
00345
00346 struct RGNELEMLIST {
00347 int ElemType;
00348 UINT8 *set;
00349 UINT32 NumElem;
00350 UINT32 NumSelected;
00351 };
00352
00353 extern "C" {
00354
00358
00360 int ComputeHomerange (
00361 DPOINT2D **Points,
00362 INT32 NumPoints,
00363 DPOLYGON **Dpolys,
00364 INT32 *NumDpolys,
00365 POLYFITPARM *pfparm
00366 );
00367
00369 int MregionFromBasin (
00370 const RVC::OBJITEM& SrcRastObjItem,
00371 const RVC::OBJITEM& SrcVectObjItem,
00372 int NumElemTypes,
00373 RGNELEMLIST *ElemList,
00374 REGION2D& region
00375 );
00376
00378 int MregionFromBufferZone (
00379 const RVC::OBJITEM& SrcObjItem,
00380 int NumElemTypes,
00381 RGNELEMLIST *ElemList,
00382 DOUBLE PointDistance,
00383 DOUBLE LineDistance,
00384 DOUBLE PolyDistance,
00385 int Unit,
00386 bool side,
00387 REGION2D& region
00388 );
00389
00391 ERRVALUE MregionFromCluster (
00392 const RVC::OBJITEM& SrcGeomObjItem,
00393 RGNELEMLIST *ElemList,
00394 int NumElemTypes,
00395 CLASSIFY_PARM *clparm,
00396 REGION2D& region
00397 );
00398
00399
00409 int MregionFromPolygonFit (
00410 const RVC::OBJITEM& SrcGeomObjItem,
00411 RGNELEMLIST *bitarray,
00412 int NumPoints,
00413 POLYFITPARM *pfparm,
00414 REGION2D& region
00415 );
00416
00418 int MregionFromTextureGrowth (
00419 int rhandle,
00420 int vhandle,
00421 int NumElemTypes,
00422 RGNELEMLIST *ElemList,
00423 DOUBLE numSD,
00424 INT32 Around,
00425 REGION2D& region,
00426 UINT32 ProcessType
00427 );
00428
00430 ERRVALUE MregionFromVoronoi (
00431 const RVC::OBJITEM& SrcGeomObjItem,
00432 RGNELEMLIST *ElemList,
00433 int NumElemTypes,
00434 DOUBLE ExtFactor,
00435 REGION2D& region
00436 );
00437
00441 void MregionInitPolygonFit (
00442 POLYFITPARM *pfparm,
00443 UINT32 method
00444 );
00445
00447
00448 }
00449
00450 #endif