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