1""" 2Metadata classes for map layer and space time datasets 3 4Usage: 5 6.. code-block:: python 7 8 >>> import grass.temporal as tgis 9 >>> tgis.init() 10 >>> meta = tgis.RasterMetadata() 11 >>> meta = tgis.Raster3DMetadata() 12 >>> meta = tgis.VectorMetadata() 13 >>> meta = tgis.STRDSMetadata() 14 >>> meta = tgis.STR3DSMetadata() 15 >>> meta = tgis.STVDSMetadata() 16 17(C) 2012-2013 by the GRASS Development Team 18This program is free software under the GNU General Public 19License (>=v2). Read the file COPYING that comes with GRASS 20for details. 21 22:authors: Soeren Gebbert 23""" 24from __future__ import print_function 25from .base import SQLDatabaseInterface 26from .core import init 27 28############################################################################### 29 30 31class RasterMetadataBase(SQLDatabaseInterface): 32 """This is the metadata base class for time stamped raster and raster3d maps 33 34 Usage: 35 36 .. code-block:: python 37 38 >>> init() 39 >>> meta = RasterMetadataBase(table="metadata", ident="soil@PERMANENT", 40 ... datatype="CELL", cols=100, rows=100, number_of_cells=10000, nsres=0.1, 41 ... ewres=0.1, min=0, max=100) 42 >>> meta.datatype 43 'CELL' 44 >>> meta.cols 45 100 46 >>> meta.rows 47 100 48 >>> meta.number_of_cells 49 10000 50 >>> meta.nsres 51 0.1 52 >>> meta.ewres 53 0.1 54 >>> meta.min 55 0.0 56 >>> meta.max 57 100.0 58 >>> meta.print_info() 59 | Datatype:................... CELL 60 | Number of columns:.......... 100 61 | Number of rows:............. 100 62 | Number of cells:............ 10000 63 | North-South resolution:..... 0.1 64 | East-west resolution:....... 0.1 65 | Minimum value:.............. 0.0 66 | Maximum value:.............. 100.0 67 >>> meta.print_shell_info() 68 datatype=CELL 69 cols=100 70 rows=100 71 number_of_cells=10000 72 nsres=0.1 73 ewres=0.1 74 min=0.0 75 max=100.0 76 77 """ 78 def __init__(self, table=None, ident=None, datatype=None, cols=None, 79 rows=None, number_of_cells=None, nsres=None, ewres=None, 80 min=None, max=None): 81 82 SQLDatabaseInterface.__init__(self, table, ident) 83 84 self.set_id(ident) 85 self.set_datatype(datatype) 86 self.set_cols(cols) 87 self.set_rows(rows) 88 self.set_number_of_cells(number_of_cells) 89 self.set_nsres(nsres) 90 self.set_ewres(ewres) 91 self.set_min(min) 92 self.set_max(max) 93 94 def set_id(self, ident): 95 """Convenient method to set the unique identifier (primary key)""" 96 self.ident = ident 97 self.D["id"] = ident 98 99 def set_datatype(self, datatype): 100 """Set the datatype""" 101 self.D["datatype"] = datatype 102 103 def set_cols(self, cols): 104 """Set the number of cols""" 105 if cols is not None: 106 self.D["cols"] = int(cols) 107 else: 108 self.D["cols"] = None 109 110 def set_rows(self, rows): 111 """Set the number of rows""" 112 if rows is not None: 113 self.D["rows"] = int(rows) 114 else: 115 self.D["rows"] = None 116 117 def set_number_of_cells(self, number_of_cells): 118 """Set the number of cells""" 119 if number_of_cells is not None: 120 self.D["number_of_cells"] = int(number_of_cells) 121 else: 122 self.D["number_of_cells"] = None 123 124 def set_nsres(self, nsres): 125 """Set the north-south resolution""" 126 if nsres is not None: 127 self.D["nsres"] = float(nsres) 128 else: 129 self.D["nsres"] = None 130 131 def set_ewres(self, ewres): 132 """Set the east-west resolution""" 133 if ewres is not None: 134 self.D["ewres"] = float(ewres) 135 else: 136 self.D["ewres"] = None 137 138 def set_min(self, min): 139 """Set the minimum raster value""" 140 if min is not None: 141 self.D["min"] = float(min) 142 else: 143 self.D["min"] = None 144 145 def set_max(self, max): 146 """Set the maximum raster value""" 147 if max is not None: 148 self.D["max"] = float(max) 149 else: 150 self.D["max"] = None 151 152 def get_id(self): 153 """Convenient method to get the unique identifier (primary key) 154 :return: None if not found 155 """ 156 if "id" in self.D: 157 return self.D["id"] 158 else: 159 return None 160 161 def get_datatype(self): 162 """Get the map type 163 :return: None if not found""" 164 if "datatype" in self.D: 165 return self.D["datatype"] 166 else: 167 return None 168 169 def get_cols(self): 170 """Get number of cols 171 :return: None if not found""" 172 if "cols" in self.D: 173 return self.D["cols"] 174 else: 175 return None 176 177 def get_rows(self): 178 """Get number of rows 179 :return: None if not found""" 180 if "rows" in self.D: 181 return self.D["rows"] 182 else: 183 return None 184 185 def get_number_of_cells(self): 186 """Get number of cells 187 :return: None if not found""" 188 if "number_of_cells" in self.D: 189 return self.D["number_of_cells"] 190 else: 191 return None 192 193 def get_nsres(self): 194 """Get the north-south resolution 195 :return: None if not found""" 196 if "nsres" in self.D: 197 return self.D["nsres"] 198 else: 199 return None 200 201 def get_ewres(self): 202 """Get east-west resolution 203 :return: None if not found""" 204 if "ewres" in self.D: 205 return self.D["ewres"] 206 else: 207 return None 208 209 def get_min(self): 210 """Get the minimum cell value 211 :return: None if not found""" 212 if "min" in self.D: 213 return self.D["min"] 214 else: 215 return None 216 217 def get_max(self): 218 """Get the maximum cell value 219 :return: None if not found""" 220 if "max" in self.D: 221 return self.D["max"] 222 else: 223 return None 224 225 # Properties 226 datatype = property(fget=get_datatype, fset=set_datatype) 227 cols = property(fget=get_cols, fset=set_cols) 228 rows = property(fget=get_rows, fset=set_rows) 229 number_of_cells = property(fget=get_number_of_cells, 230 fset=set_number_of_cells) 231 nsres = property(fget=get_nsres, fset=set_nsres) 232 ewres = property(fget=get_ewres, fset=set_ewres) 233 min = property(fget=get_min, fset=set_min) 234 max = property(fget=get_max, fset=set_max) 235 236 def print_info(self): 237 """Print information about this class in human readable style""" 238 # 0123456789012345678901234567890 239 print(" | Datatype:................... " + str(self.get_datatype())) 240 print(" | Number of columns:.......... " + str(self.get_cols())) 241 print(" | Number of rows:............. " + str(self.get_rows())) 242 print(" | Number of cells:............ " + str( 243 self.get_number_of_cells())) 244 print(" | North-South resolution:..... " + str(self.get_nsres())) 245 print(" | East-west resolution:....... " + str(self.get_ewres())) 246 print(" | Minimum value:.............. " + str(self.get_min())) 247 print(" | Maximum value:.............. " + str(self.get_max())) 248 249 def print_shell_info(self): 250 """Print information about this class in shell style""" 251 print("datatype=" + str(self.get_datatype())) 252 print("cols=" + str(self.get_cols())) 253 print("rows=" + str(self.get_rows())) 254 print("number_of_cells=" + str(self.get_number_of_cells())) 255 print("nsres=" + str(self.get_nsres())) 256 print("ewres=" + str(self.get_ewres())) 257 print("min=" + str(self.get_min())) 258 print("max=" + str(self.get_max())) 259 260############################################################################### 261 262 263class RasterMetadata(RasterMetadataBase): 264 """This is the raster metadata class 265 266 This class is the interface to the raster_metadata table in the 267 temporal database that stores the metadata of all registered raster maps. 268 269 The metadata includes the datatype, number of cols, rows and cells and 270 the north-south and east west resolution of the map. Additionally the 271 minimum and maximum valuesare stored. 272 273 Usage: 274 275 .. code-block:: python 276 277 >>> init() 278 >>> meta = RasterMetadata(ident="soil@PERMANENT", 279 ... datatype="CELL", cols=100, rows=100, number_of_cells=10000, nsres=0.1, 280 ... ewres=0.1, min=0, max=100) 281 >>> meta.datatype 282 'CELL' 283 >>> meta.cols 284 100 285 >>> meta.rows 286 100 287 >>> meta.number_of_cells 288 10000 289 >>> meta.nsres 290 0.1 291 >>> meta.ewres 292 0.1 293 >>> meta.min 294 0.0 295 >>> meta.max 296 100.0 297 >>> meta.print_info() 298 +-------------------- Metadata information ----------------------------------+ 299 | Datatype:................... CELL 300 | Number of columns:.......... 100 301 | Number of rows:............. 100 302 | Number of cells:............ 10000 303 | North-South resolution:..... 0.1 304 | East-west resolution:....... 0.1 305 | Minimum value:.............. 0.0 306 | Maximum value:.............. 100.0 307 >>> meta.print_shell_info() 308 datatype=CELL 309 cols=100 310 rows=100 311 number_of_cells=10000 312 nsres=0.1 313 ewres=0.1 314 min=0.0 315 max=100.0 316 317 """ 318 def __init__(self, ident=None, datatype=None, 319 cols=None, rows=None, number_of_cells=None, nsres=None, 320 ewres=None, min=None, max=None): 321 322 RasterMetadataBase.__init__(self, "raster_metadata", ident, datatype, 323 cols, rows, number_of_cells, nsres, 324 ewres, min, max) 325 326 def print_info(self): 327 """Print information about this class in human readable style""" 328 print(" +-------------------- Metadata information ----------------------------------+") 329 # 0123456789012345678901234567890 330 RasterMetadataBase.print_info(self) 331 332 def print_shell_info(self): 333 """Print information about this class in shell style""" 334 RasterMetadataBase.print_shell_info(self) 335 336############################################################################### 337 338 339class Raster3DMetadata(RasterMetadataBase): 340 """This is the raster3d metadata class 341 342 This class is the interface to the raster3d_metadata table in the 343 temporal database that stores the metadata of all registered 344 3D raster maps. 345 346 The metadata includes all raster metadata variables and additional 347 the number of depths, the top-bottom resolution and the space time 3D 348 raster dataset register table is stored. 349 350 Usage: 351 352 .. code-block:: python 353 354 >>> init() 355 >>> meta = Raster3DMetadata(ident="soil@PERMANENT", 356 ... datatype="FCELL", cols=100, rows=100, depths=100, 357 ... number_of_cells=1000000, nsres=0.1, ewres=0.1, tbres=0.1, 358 ... min=0, max=100) 359 >>> meta.datatype 360 'FCELL' 361 >>> meta.cols 362 100 363 >>> meta.rows 364 100 365 >>> meta.depths 366 100 367 >>> meta.number_of_cells 368 1000000 369 >>> meta.nsres 370 0.1 371 >>> meta.ewres 372 0.1 373 >>> meta.tbres 374 0.1 375 >>> meta.min 376 0.0 377 >>> meta.max 378 100.0 379 >>> meta.print_info() 380 +-------------------- Metadata information ----------------------------------+ 381 | Datatype:................... FCELL 382 | Number of columns:.......... 100 383 | Number of rows:............. 100 384 | Number of cells:............ 1000000 385 | North-South resolution:..... 0.1 386 | East-west resolution:....... 0.1 387 | Minimum value:.............. 0.0 388 | Maximum value:.............. 100.0 389 | Number of depths:........... 100 390 | Top-Bottom resolution:...... 0.1 391 >>> meta.print_shell_info() 392 datatype=FCELL 393 cols=100 394 rows=100 395 number_of_cells=1000000 396 nsres=0.1 397 ewres=0.1 398 min=0.0 399 max=100.0 400 depths=100 401 tbres=0.1 402 403 """ 404 def __init__(self, ident=None, datatype=None, 405 cols=None, rows=None, depths=None, number_of_cells=None, 406 nsres=None, ewres=None, tbres=None, min=None, max=None): 407 408 RasterMetadataBase.__init__(self, "raster3d_metadata", ident, 409 datatype, cols, rows, number_of_cells, 410 nsres, ewres, min, max) 411 412 self.set_tbres(tbres) 413 self.set_depths(depths) 414 415 def set_depths(self, depths): 416 """Set the number of depths""" 417 if depths is not None: 418 self.D["depths"] = int(depths) 419 else: 420 self.D["depths"] = None 421 422 def set_tbres(self, tbres): 423 """Set the top-bottom resolution""" 424 if tbres is not None: 425 self.D["tbres"] = float(tbres) 426 else: 427 self.D["tbres"] = None 428 429 def get_depths(self): 430 """Get number of depths 431 :return: None if not found""" 432 if "depths" in self.D: 433 return self.D["depths"] 434 else: 435 return None 436 437 def get_tbres(self): 438 """Get top-bottom resolution 439 :return: None if not found""" 440 if "tbres" in self.D: 441 return self.D["tbres"] 442 else: 443 return None 444 445 depths = property(fget=get_depths, fset=set_depths) 446 tbres = property(fget=get_tbres, fset=set_tbres) 447 448 def print_info(self): 449 """Print information about this class in human readable style""" 450 print(" +-------------------- Metadata information ----------------------------------+") 451 # 0123456789012345678901234567890 452 RasterMetadataBase.print_info(self) 453 # 0123456789012345678901234567890 454 print(" | Number of depths:........... " + str(self.get_depths())) 455 print(" | Top-Bottom resolution:...... " + str(self.get_tbres())) 456 457 def print_shell_info(self): 458 """Print information about this class in shell style""" 459 RasterMetadataBase.print_shell_info(self) 460 print("depths=" + str(self.get_depths())) 461 print("tbres=" + str(self.get_tbres())) 462 463############################################################################### 464 465 466class VectorMetadata(SQLDatabaseInterface): 467 """This is the vector metadata class 468 469 This class is the interface to the vector_metadata table in the 470 temporal database that stores the metadata of all registered 471 vector maps. 472 473 Usage: 474 475 .. code-block:: python 476 477 >>> init() 478 >>> meta = VectorMetadata(ident="lidar@PERMANENT", is_3d=True, 479 ... number_of_points=1, number_of_lines=2, number_of_boundaries=3, 480 ... number_of_centroids=4, number_of_faces=5, number_of_kernels=6, 481 ... number_of_primitives=7, number_of_nodes=8, number_of_areas=9, 482 ... number_of_islands=10, number_of_holes=11, number_of_volumes=12) 483 >>> meta.id 484 'lidar@PERMANENT' 485 >>> meta.is_3d 486 True 487 >>> meta.number_of_points 488 1 489 >>> meta.number_of_lines 490 2 491 >>> meta.number_of_boundaries 492 3 493 >>> meta.number_of_centroids 494 4 495 >>> meta.number_of_faces 496 5 497 >>> meta.number_of_kernels 498 6 499 >>> meta.number_of_primitives 500 7 501 >>> meta.number_of_nodes 502 8 503 >>> meta.number_of_areas 504 9 505 >>> meta.number_of_islands 506 10 507 >>> meta.number_of_holes 508 11 509 >>> meta.number_of_volumes 510 12 511 >>> meta.print_info() 512 +-------------------- Metadata information ----------------------------------+ 513 | Is map 3d .................. True 514 | Number of points ........... 1 515 | Number of lines ............ 2 516 | Number of boundaries ....... 3 517 | Number of centroids ........ 4 518 | Number of faces ............ 5 519 | Number of kernels .......... 6 520 | Number of primitives ....... 7 521 | Number of nodes ............ 8 522 | Number of areas ............ 9 523 | Number of islands .......... 10 524 | Number of holes ............ 11 525 | Number of volumes .......... 12 526 >>> meta.print_shell_info() 527 is_3d=True 528 points=1 529 lines=2 530 boundaries=3 531 centroids=4 532 faces=5 533 kernels=6 534 primitives=7 535 nodes=8 536 areas=9 537 islands=10 538 holes=11 539 volumes=12 540 541 """ 542 def __init__(self, ident=None, is_3d=False, number_of_points=None, 543 number_of_lines=None, number_of_boundaries=None, 544 number_of_centroids=None, number_of_faces=None, 545 number_of_kernels=None, number_of_primitives=None, 546 number_of_nodes=None, number_of_areas=None, 547 number_of_islands=None, number_of_holes=None, 548 number_of_volumes=None): 549 550 SQLDatabaseInterface.__init__(self, "vector_metadata", ident) 551 552 self.set_id(ident) 553 self.set_3d_info(is_3d) 554 self.set_number_of_points(number_of_points) 555 self.set_number_of_lines(number_of_lines) 556 self.set_number_of_boundaries(number_of_boundaries) 557 self.set_number_of_centroids(number_of_centroids) 558 self.set_number_of_faces(number_of_faces) 559 self.set_number_of_kernels(number_of_kernels) 560 self.set_number_of_primitives(number_of_primitives) 561 self.set_number_of_nodes(number_of_nodes) 562 self.set_number_of_areas(number_of_areas) 563 self.set_number_of_islands(number_of_islands) 564 self.set_number_of_holes(number_of_holes) 565 self.set_number_of_volumes(number_of_volumes) 566 567 def set_id(self, ident): 568 """Convenient method to set the unique identifier (primary key)""" 569 self.ident = ident 570 self.D["id"] = ident 571 572 def set_3d_info(self, is_3d): 573 """Set True if the vector map is three dimensional""" 574 self.D["is_3d"] = is_3d 575 576 def set_number_of_points(self, number_of_points): 577 """Set the number of points of the vector map""" 578 self.D["points"] = number_of_points 579 580 def set_number_of_lines(self, number_of_lines): 581 """Set the number of lines of the vector map""" 582 self.D["lines"] = number_of_lines 583 584 def set_number_of_boundaries(self, number_of_boundaries): 585 """Set the number of boundaries of the vector map""" 586 self.D["boundaries"] = number_of_boundaries 587 588 def set_number_of_centroids(self, number_of_centroids): 589 """Set the number of centroids of the vector map""" 590 self.D["centroids"] = number_of_centroids 591 592 def set_number_of_faces(self, number_of_faces): 593 """Set the number of faces of the vector map""" 594 self.D["faces"] = number_of_faces 595 596 def set_number_of_kernels(self, number_of_kernels): 597 """Set the number of kernels of the vector map""" 598 self.D["kernels"] = number_of_kernels 599 600 def set_number_of_primitives(self, number_of_primitives): 601 """Set the number of primitives of the vector map""" 602 self.D["primitives"] = number_of_primitives 603 604 def set_number_of_nodes(self, number_of_nodes): 605 """Set the number of nodes of the vector map""" 606 self.D["nodes"] = number_of_nodes 607 608 def set_number_of_areas(self, number_of_areas): 609 """Set the number of areas of the vector map""" 610 self.D["areas"] = number_of_areas 611 612 def set_number_of_islands(self, number_of_islands): 613 """Set the number of islands of the vector map""" 614 self.D["islands"] = number_of_islands 615 616 def set_number_of_holes(self, number_of_holes): 617 """Set the number of holes of the vector map""" 618 self.D["holes"] = number_of_holes 619 620 def set_number_of_volumes(self, number_of_volumes): 621 """Set the number of volumes of the vector map""" 622 self.D["volumes"] = number_of_volumes 623 624 def get_id(self): 625 """Convenient method to get the unique identifier (primary key) 626 :return: None if not found 627 """ 628 if "id" in self.D: 629 return self.D["id"] 630 else: 631 return None 632 633 def get_3d_info(self): 634 """Return True if the map is three dimensional, 635 False if not and None if not info was found""" 636 if "is_3d" in self.D: 637 return self.D["is_3d"] 638 else: 639 return None 640 641 def get_number_of_points(self): 642 """Get the number of points of the vector map 643 :return: None if not found""" 644 if "points" in self.D: 645 return self.D["points"] 646 else: 647 return None 648 649 def get_number_of_lines(self): 650 """Get the number of lines of the vector map 651 :return: None if not found""" 652 if "lines" in self.D: 653 return self.D["lines"] 654 else: 655 return None 656 657 def get_number_of_boundaries(self): 658 """Get the number of boundaries of the vector map 659 :return: None if not found""" 660 if "boundaries" in self.D: 661 return self.D["boundaries"] 662 else: 663 return None 664 665 def get_number_of_centroids(self): 666 """Get the number of centroids of the vector map 667 :return: None if not found""" 668 if "centroids" in self.D: 669 return self.D["centroids"] 670 else: 671 return None 672 673 def get_number_of_faces(self): 674 """Get the number of faces of the vector map 675 :return: None if not found""" 676 if "faces" in self.D: 677 return self.D["faces"] 678 else: 679 return None 680 681 def get_number_of_kernels(self): 682 """Get the number of kernels of the vector map 683 :return: None if not found""" 684 if "kernels" in self.D: 685 return self.D["kernels"] 686 else: 687 return None 688 689 def get_number_of_primitives(self): 690 """Get the number of primitives of the vector map 691 :return: None if not found""" 692 if "primitives" in self.D: 693 return self.D["primitives"] 694 else: 695 return None 696 697 def get_number_of_nodes(self): 698 """Get the number of nodes of the vector map 699 :return: None if not found""" 700 if "nodes" in self.D: 701 return self.D["nodes"] 702 else: 703 return None 704 705 def get_number_of_areas(self): 706 """Get the number of areas of the vector map 707 :return: None if not found""" 708 if "areas" in self.D: 709 return self.D["areas"] 710 else: 711 return None 712 713 def get_number_of_islands(self): 714 """Get the number of islands of the vector map 715 :return: None if not found""" 716 if "islands" in self.D: 717 return self.D["islands"] 718 else: 719 return None 720 721 def get_number_of_holes(self): 722 """Get the number of holes of the vector map 723 :return: None if not found""" 724 if "holes" in self.D: 725 return self.D["holes"] 726 else: 727 return None 728 729 def get_number_of_volumes(self): 730 """Get the number of volumes of the vector map 731 :return: None if not found""" 732 if "volumes" in self.D: 733 return self.D["volumes"] 734 else: 735 return None 736 737 # Set the properties 738 id = property(fget=get_id, fset=set_id) 739 is_3d = property(fget=get_3d_info, fset=set_3d_info) 740 number_of_points = property(fget=get_number_of_points, 741 fset=set_number_of_points) 742 number_of_lines = property(fget=get_number_of_lines, 743 fset=set_number_of_lines) 744 number_of_boundaries = property(fget=get_number_of_boundaries, 745 fset=set_number_of_boundaries) 746 number_of_centroids = property(fget=get_number_of_centroids, 747 fset=set_number_of_centroids) 748 number_of_faces = property(fget=get_number_of_faces, 749 fset=set_number_of_faces) 750 number_of_kernels = property(fget=get_number_of_kernels, 751 fset=set_number_of_kernels) 752 number_of_primitives = property(fget=get_number_of_primitives, 753 fset=set_number_of_primitives) 754 number_of_nodes = property(fget=get_number_of_nodes, 755 fset=set_number_of_nodes) 756 number_of_areas = property(fget=get_number_of_areas, 757 fset=set_number_of_areas) 758 number_of_islands = property(fget=get_number_of_islands, 759 fset=set_number_of_islands) 760 number_of_holes = property(fget=get_number_of_holes, 761 fset=set_number_of_holes) 762 number_of_volumes = property(fget=get_number_of_volumes, 763 fset=set_number_of_volumes) 764 765 def print_info(self): 766 """Print information about this class in human readable style""" 767 # 0123456789012345678901234567890 768 print(" +-------------------- Metadata information ----------------------------------+") 769 print(" | Is map 3d .................. " + str(self.get_3d_info())) 770 print(" | Number of points ........... " + str(self.get_number_of_points())) 771 print(" | Number of lines ............ " + str(self.get_number_of_lines())) 772 print(" | Number of boundaries ....... " + str(self.get_number_of_boundaries())) 773 print(" | Number of centroids ........ " + str(self.get_number_of_centroids())) 774 print(" | Number of faces ............ " + str(self.get_number_of_faces())) 775 print(" | Number of kernels .......... " + str(self.get_number_of_kernels())) 776 print(" | Number of primitives ....... " + str(self.get_number_of_primitives())) 777 print(" | Number of nodes ............ " + str(self.get_number_of_nodes())) 778 print(" | Number of areas ............ " + str(self.get_number_of_areas())) 779 print(" | Number of islands .......... " + str(self.get_number_of_islands())) 780 print(" | Number of holes ............ " + str(self.get_number_of_holes())) 781 print(" | Number of volumes .......... " + str(self.get_number_of_volumes())) 782 783 def print_shell_info(self): 784 """Print information about this class in shell style""" 785 print("is_3d=" + str(self.get_3d_info())) 786 print("points=" + str(self.get_number_of_points())) 787 print("lines=" + str(self.get_number_of_lines())) 788 print("boundaries=" + str(self.get_number_of_boundaries())) 789 print("centroids=" + str(self.get_number_of_centroids())) 790 print("faces=" + str(self.get_number_of_faces())) 791 print("kernels=" + str(self.get_number_of_kernels())) 792 print("primitives=" + str(self.get_number_of_primitives())) 793 print("nodes=" + str(self.get_number_of_nodes())) 794 print("areas=" + str(self.get_number_of_areas())) 795 print("islands=" + str(self.get_number_of_islands())) 796 print("holes=" + str(self.get_number_of_holes())) 797 print("volumes=" + str(self.get_number_of_volumes())) 798 799############################################################################### 800 801 802class STDSMetadataBase(SQLDatabaseInterface): 803 """This is the space time dataset metadata base class for 804 strds, stvds and str3ds datasets 805 setting/getting the id, the title and the description 806 807 Usage: 808 809 .. code-block:: python 810 811 >>> init() 812 >>> meta = STDSMetadataBase(ident="soils@PERMANENT", 813 ... title="Soils", description="Soils 1950 - 2010") 814 >>> meta.id 815 'soils@PERMANENT' 816 >>> meta.title 817 'Soils' 818 >>> meta.description 819 'Soils 1950 - 2010' 820 >>> meta.number_of_maps 821 >>> meta.print_info() 822 | Number of registered maps:.. None 823 | 824 | Title: 825 | Soils 826 | Description: 827 | Soils 1950 - 2010 828 | Command history: 829 >>> meta.print_shell_info() 830 number_of_maps=None 831 832 """ 833 def __init__(self, table=None, ident=None, title=None, description=None, 834 command=None): 835 836 SQLDatabaseInterface.__init__(self, table, ident) 837 838 self.set_id(ident) 839 self.set_title(title) 840 self.set_description(description) 841 self.set_command(command) 842 # No setter for this 843 self.D["number_of_maps"] = None 844 845 def set_id(self, ident): 846 """Convenient method to set the unique identifier (primary key)""" 847 self.ident = ident 848 self.D["id"] = ident 849 850 def set_title(self, title): 851 """Set the title""" 852 self.D["title"] = title 853 854 def set_description(self, description): 855 """Set the number of cols""" 856 self.D["description"] = description 857 858 def set_command(self, command): 859 """Set the number of cols""" 860 self.D["command"] = command 861 862 def get_id(self): 863 """Convenient method to get the unique identifier (primary key) 864 :return: None if not found 865 """ 866 if "id" in self.D: 867 return self.D["id"] 868 else: 869 return None 870 871 def get_title(self): 872 """Get the title 873 :return: None if not found""" 874 if "title" in self.D: 875 return self.D["title"] 876 else: 877 return None 878 879 def get_description(self): 880 """Get description 881 :return: None if not found""" 882 if "description" in self.D: 883 return self.D["description"] 884 else: 885 return None 886 887 def get_command(self): 888 """Get command 889 :return: None if not found""" 890 if "command" in self.D: 891 return self.D["command"] 892 else: 893 return None 894 895 def get_number_of_maps(self): 896 """Get the number of registered maps, 897 this value is set in the database 898 automatically via SQL, so no setter exists 899 :return: None if not found""" 900 if "number_of_maps" in self.D: 901 return self.D["number_of_maps"] 902 else: 903 return None 904 905 id = property(fget=get_id, fset=set_id) 906 title = property(fget=get_title, fset=set_title) 907 description = property(fget=get_description, fset=set_description) 908 number_of_maps = property(fget=get_number_of_maps) 909 910 def print_info(self): 911 """Print information about this class in human readable style""" 912 # 0123456789012345678901234567890 913 print(" | Number of registered maps:.. " + str( 914 self.get_number_of_maps())) 915 print(" |") 916 print(" | Title:") 917 print(" | " + str(self.get_title())) 918 print(" | Description:") 919 print(" | " + str(self.get_description())) 920 print(" | Command history:") 921 command = self.get_command() 922 if command: 923 for token in command.split("\n"): 924 print(" | " + str(token)) 925 926 def print_history(self): 927 """Print history information about this class in human readable 928 shell style 929 """ 930 # 0123456789012345678901234567890 931 print("# Title:") 932 print("# " + str(self.get_title())) 933 print("# Description:") 934 print("# " + str(self.get_description())) 935 print("# Command history:") 936 command = self.get_command() 937 938 if command: 939 tokens = command.split("\n") 940 print_list = [] 941 for token in tokens: 942 token = str(token).rstrip().lstrip() 943 if len(token) > 1: 944 print_list.append(token) 945 946 count = 0 947 for token in print_list: 948 count += 1 949 if len(token) > 1: 950 if token[0] == "#": 951 print(token) 952 elif count < len(print_list): 953 print(token + " \\") 954 else: 955 print(token) 956 957 def print_shell_info(self): 958 """Print information about this class in shell style""" 959 print("number_of_maps=" + str(self.get_number_of_maps())) 960 961############################################################################### 962 963 964class STDSRasterMetadataBase(STDSMetadataBase): 965 """This is the space time dataset metadata base 966 class for strds and str3ds datasets 967 968 Most of the metadata values are set by SQL scripts in the database when 969 new maps are added. Therefor only some set- an many 970 get-functions are available. 971 972 Usage: 973 974 .. code-block:: python 975 976 >>> init() 977 >>> meta = STDSRasterMetadataBase(ident="soils@PERMANENT", 978 ... title="Soils", description="Soils 1950 - 2010") 979 >>> meta.id 980 'soils@PERMANENT' 981 >>> meta.title 982 'Soils' 983 >>> meta.description 984 'Soils 1950 - 2010' 985 >>> meta.number_of_maps 986 >>> meta.min_max 987 >>> meta.max_max 988 >>> meta.min_min 989 >>> meta.max_min 990 >>> meta.nsres_min 991 >>> meta.nsres_max 992 >>> meta.ewres_min 993 >>> meta.ewres_max 994 >>> meta.print_info() 995 | North-South resolution min:. None 996 | North-South resolution max:. None 997 | East-west resolution min:... None 998 | East-west resolution max:... None 999 | Minimum value min:.......... None 1000 | Minimum value max:.......... None 1001 | Maximum value min:.......... None 1002 | Maximum value max:.......... None 1003 | Aggregation type:........... None 1004 | Number of registered maps:.. None 1005 | 1006 | Title: 1007 | Soils 1008 | Description: 1009 | Soils 1950 - 2010 1010 | Command history: 1011 >>> meta.print_shell_info() 1012 aggregation_type=None 1013 number_of_maps=None 1014 nsres_min=None 1015 nsres_max=None 1016 ewres_min=None 1017 ewres_max=None 1018 min_min=None 1019 min_max=None 1020 max_min=None 1021 max_max=None 1022 1023 """ 1024 def __init__(self, table=None, ident=None, title=None, description=None, 1025 aggregation_type=None): 1026 1027 STDSMetadataBase.__init__(self, table, ident, title, description) 1028 1029 # Initialize the dict to select all values from the db 1030 self.D["min_max"] = None 1031 self.D["max_max"] = None 1032 self.D["min_min"] = None 1033 self.D["max_min"] = None 1034 self.D["nsres_min"] = None 1035 self.D["nsres_max"] = None 1036 self.D["ewres_min"] = None 1037 self.D["ewres_max"] = None 1038 self.D["aggregation_type"] = aggregation_type 1039 1040 def set_aggregation_type(self, aggregation_type): 1041 """Set the aggregation type of the dataset (mean, min, max, ...)""" 1042 self.D["aggregation_type"] = aggregation_type 1043 1044 def get_aggregation_type(self): 1045 """Get the aggregation type of the dataset (mean, min, max, ...) 1046 :return: None if not found 1047 """ 1048 if "aggregation_type" in self.D: 1049 return self.D["aggregation_type"] 1050 else: 1051 return None 1052 1053 def get_max_min(self): 1054 """Get the minimal maximum of all registered maps, 1055 this value is set in the database 1056 automatically via SQL, so no setter exists 1057 :return: None if not found""" 1058 if "max_min" in self.D: 1059 return self.D["max_min"] 1060 else: 1061 return None 1062 1063 def get_min_min(self): 1064 """Get the minimal minimum of all registered maps, 1065 this value is set in the database 1066 automatically via SQL, so no setter exists 1067 :return: None if not found""" 1068 if "min_min" in self.D: 1069 return self.D["min_min"] 1070 else: 1071 return None 1072 1073 def get_max_max(self): 1074 """Get the maximal maximum of all registered maps, 1075 this value is set in the database 1076 automatically via SQL, so no setter exists 1077 :return: None if not found""" 1078 if "max_max" in self.D: 1079 return self.D["max_max"] 1080 else: 1081 return None 1082 1083 def get_min_max(self): 1084 """Get the maximal minimum of all registered maps, 1085 this value is set in the database 1086 automatically via SQL, so no setter exists 1087 :return: None if not found""" 1088 if "min_max" in self.D: 1089 return self.D["min_max"] 1090 else: 1091 return None 1092 1093 def get_nsres_min(self): 1094 """Get the minimal north-south resolution of all registered maps, 1095 this value is set in the database 1096 automatically via SQL, so no setter exists 1097 :return: None if not found""" 1098 if "nsres_min" in self.D: 1099 return self.D["nsres_min"] 1100 else: 1101 return None 1102 1103 def get_nsres_max(self): 1104 """Get the maximal north-south resolution of all registered maps, 1105 this value is set in the database 1106 automatically via SQL, so no setter exists 1107 :return: None if not found""" 1108 if "nsres_max" in self.D: 1109 return self.D["nsres_max"] 1110 else: 1111 return None 1112 1113 def get_ewres_min(self): 1114 """Get the minimal east-west resolution of all registered maps, 1115 this value is set in the database 1116 automatically via SQL, so no setter exists 1117 :return: None if not found""" 1118 if "ewres_min" in self.D: 1119 return self.D["ewres_min"] 1120 else: 1121 return None 1122 1123 def get_ewres_max(self): 1124 """Get the maximal east-west resolution of all registered maps, 1125 this value is set in the database 1126 automatically via SQL, so no setter exists 1127 :return: None if not found""" 1128 if "ewres_max" in self.D: 1129 return self.D["ewres_max"] 1130 else: 1131 return None 1132 1133 nsres_min = property(fget=get_nsres_min) 1134 nsres_max = property(fget=get_nsres_max) 1135 ewres_min = property(fget=get_ewres_min) 1136 ewres_max = property(fget=get_ewres_max) 1137 min_min = property(fget=get_min_min) 1138 min_max = property(fget=get_min_max) 1139 max_min = property(fget=get_max_min) 1140 max_max = property(fget=get_max_max) 1141 aggregation_type = property(fset=set_aggregation_type, 1142 fget=get_aggregation_type) 1143 1144 def print_info(self): 1145 """Print information about this class in human readable style""" 1146 # 0123456789012345678901234567890 1147 print(" | North-South resolution min:. " + str(self.get_nsres_min())) 1148 print(" | North-South resolution max:. " + str(self.get_nsres_max())) 1149 print(" | East-west resolution min:... " + str(self.get_ewres_min())) 1150 print(" | East-west resolution max:... " + str(self.get_ewres_max())) 1151 print(" | Minimum value min:.......... " + str(self.get_min_min())) 1152 print(" | Minimum value max:.......... " + str(self.get_min_max())) 1153 print(" | Maximum value min:.......... " + str(self.get_max_min())) 1154 print(" | Maximum value max:.......... " + str(self.get_max_max())) 1155 print(" | Aggregation type:........... " + str(self.get_aggregation_type())) 1156 STDSMetadataBase.print_info(self) 1157 1158 def print_shell_info(self): 1159 """Print information about this class in shell style""" 1160 print("aggregation_type=" + str(self.get_aggregation_type())) 1161 STDSMetadataBase.print_shell_info(self) 1162 print("nsres_min=" + str(self.get_nsres_min())) 1163 print("nsres_max=" + str(self.get_nsres_max())) 1164 print("ewres_min=" + str(self.get_ewres_min())) 1165 print("ewres_max=" + str(self.get_ewres_max())) 1166 print("min_min=" + str(self.get_min_min())) 1167 print("min_max=" + str(self.get_min_max())) 1168 print("max_min=" + str(self.get_max_min())) 1169 print("max_max=" + str(self.get_max_max())) 1170 1171 1172############################################################################### 1173 1174class STRDSMetadata(STDSRasterMetadataBase): 1175 """This is the raster metadata class 1176 1177 This class is the interface to the strds_metadata table in the 1178 temporal database that stores the metadata of all registered 1179 space time raster datasets 1180 1181 Most of the metadata values are set by SQL scripts in the database when 1182 new raster maps are added. Therefor only some set- an many 1183 get-functions are available. 1184 1185 Usage: 1186 1187 .. code-block:: python 1188 1189 >>> init() 1190 >>> meta = STRDSMetadata(ident="soils@PERMANENT", 1191 ... title="Soils", description="Soils 1950 - 2010") 1192 >>> meta.id 1193 'soils@PERMANENT' 1194 >>> meta.title 1195 'Soils' 1196 >>> meta.description 1197 'Soils 1950 - 2010' 1198 >>> meta.number_of_maps 1199 >>> meta.min_max 1200 >>> meta.max_max 1201 >>> meta.min_min 1202 >>> meta.max_min 1203 >>> meta.nsres_min 1204 >>> meta.nsres_max 1205 >>> meta.ewres_min 1206 >>> meta.ewres_max 1207 >>> meta.raster_register 1208 >>> meta.print_info() 1209 +-------------------- Metadata information ----------------------------------+ 1210 | Raster register table:...... None 1211 | North-South resolution min:. None 1212 | North-South resolution max:. None 1213 | East-west resolution min:... None 1214 | East-west resolution max:... None 1215 | Minimum value min:.......... None 1216 | Minimum value max:.......... None 1217 | Maximum value min:.......... None 1218 | Maximum value max:.......... None 1219 | Aggregation type:........... None 1220 | Number of registered maps:.. None 1221 | 1222 | Title: 1223 | Soils 1224 | Description: 1225 | Soils 1950 - 2010 1226 | Command history: 1227 >>> meta.print_shell_info() 1228 aggregation_type=None 1229 number_of_maps=None 1230 nsres_min=None 1231 nsres_max=None 1232 ewres_min=None 1233 ewres_max=None 1234 min_min=None 1235 min_max=None 1236 max_min=None 1237 max_max=None 1238 raster_register=None 1239 1240 """ 1241 def __init__(self, ident=None, raster_register=None, title=None, 1242 description=None): 1243 1244 STDSRasterMetadataBase.__init__( 1245 self, "strds_metadata", ident, title, description) 1246 1247 self.set_raster_register(raster_register) 1248 1249 def set_raster_register(self, raster_register): 1250 """Set the raster map register table name""" 1251 self.D["raster_register"] = raster_register 1252 1253 def get_raster_register(self): 1254 """Get the raster map register table name 1255 :return: None if not found""" 1256 if "raster_register" in self.D: 1257 return self.D["raster_register"] 1258 else: 1259 return None 1260 1261 raster_register = property(fget=get_raster_register, 1262 fset=set_raster_register) 1263 1264 def print_info(self): 1265 """Print information about this class in human readable style""" 1266 print(" +-------------------- Metadata information ----------------------------------+") 1267 # 0123456789012345678901234567890 1268 print(" | Raster register table:...... " + str( 1269 self.get_raster_register())) 1270 STDSRasterMetadataBase.print_info(self) 1271 1272 def print_shell_info(self): 1273 """Print information about this class in shell style""" 1274 STDSRasterMetadataBase.print_shell_info(self) 1275 print("raster_register=" + str(self.get_raster_register())) 1276 1277############################################################################### 1278 1279 1280class STR3DSMetadata(STDSRasterMetadataBase): 1281 """This is the space time 3D raster metadata class 1282 1283 This class is the interface to the str3ds_metadata table in the 1284 temporal database that stores the metadata of all registered 1285 space time 3D raster datasets 1286 1287 Most of the metadata values are set by SQL scripts in the database when 1288 new 3D raster maps are added. Therefor only some set- an many 1289 get-functions are available. 1290 1291 Usage: 1292 1293 .. code-block:: python 1294 1295 >>> init() 1296 >>> meta = STR3DSMetadata(ident="soils@PERMANENT", 1297 ... title="Soils", description="Soils 1950 - 2010") 1298 >>> meta.id 1299 'soils@PERMANENT' 1300 >>> meta.title 1301 'Soils' 1302 >>> meta.description 1303 'Soils 1950 - 2010' 1304 >>> meta.number_of_maps 1305 >>> meta.min_max 1306 >>> meta.max_max 1307 >>> meta.min_min 1308 >>> meta.max_min 1309 >>> meta.nsres_min 1310 >>> meta.nsres_max 1311 >>> meta.ewres_min 1312 >>> meta.ewres_max 1313 >>> meta.tbres_min 1314 >>> meta.tbres_max 1315 >>> meta.raster3d_register 1316 >>> meta.print_info() 1317 +-------------------- Metadata information ----------------------------------+ 1318 | 3D raster register table:... None 1319 | Top-bottom resolution min:.. None 1320 | Top-bottom resolution max:.. None 1321 | North-South resolution min:. None 1322 | North-South resolution max:. None 1323 | East-west resolution min:... None 1324 | East-west resolution max:... None 1325 | Minimum value min:.......... None 1326 | Minimum value max:.......... None 1327 | Maximum value min:.......... None 1328 | Maximum value max:.......... None 1329 | Aggregation type:........... None 1330 | Number of registered maps:.. None 1331 | 1332 | Title: 1333 | Soils 1334 | Description: 1335 | Soils 1950 - 2010 1336 | Command history: 1337 >>> meta.print_shell_info() 1338 aggregation_type=None 1339 number_of_maps=None 1340 nsres_min=None 1341 nsres_max=None 1342 ewres_min=None 1343 ewres_max=None 1344 min_min=None 1345 min_max=None 1346 max_min=None 1347 max_max=None 1348 tbres_min=None 1349 tbres_max=None 1350 raster3d_register=None 1351 1352 """ 1353 def __init__(self, ident=None, raster3d_register=None, title=None, 1354 description=None): 1355 1356 STDSRasterMetadataBase.__init__( 1357 self, "str3ds_metadata", ident, title, description) 1358 1359 self.set_raster3d_register(raster3d_register) 1360 self.D["tbres_min"] = None 1361 self.D["tbres_max"] = None 1362 1363 def set_raster3d_register(self, raster3d_register): 1364 """Set the raster map register table name""" 1365 self.D["raster3d_register"] = raster3d_register 1366 1367 def get_raster3d_register(self): 1368 """Get the raster3d map register table name 1369 :return: None if not found""" 1370 if "raster3d_register" in self.D: 1371 return self.D["raster3d_register"] 1372 else: 1373 return None 1374 1375 def get_tbres_min(self): 1376 """Get the minimal top-bottom resolution of all registered maps, 1377 this value is set in the database 1378 automatically via SQL, so no setter exists 1379 :return: None if not found""" 1380 if "tbres_min" in self.D: 1381 return self.D["tbres_min"] 1382 else: 1383 return None 1384 1385 def get_tbres_max(self): 1386 """Get the maximal top-bottom resolution of all registered maps, 1387 this value is set in the database 1388 automatically via SQL, so no setter exists 1389 :return: None if not found""" 1390 if "tbres_max" in self.D: 1391 return self.D["tbres_max"] 1392 else: 1393 return None 1394 1395 raster3d_register = property(fget=get_raster3d_register, 1396 fset=set_raster3d_register) 1397 tbres_min = property(fget=get_tbres_min) 1398 tbres_max = property(fget=get_tbres_max) 1399 1400 def print_info(self): 1401 """Print information about this class in human readable style""" 1402 print(" +-------------------- Metadata information ----------------------------------+") 1403 # 0123456789012345678901234567890 1404 # 0123456789012345678901234567890 1405 print(" | 3D raster register table:... " + str( 1406 self.get_raster3d_register())) 1407 print(" | Top-bottom resolution min:.. " + str(self.get_ewres_min())) 1408 print(" | Top-bottom resolution max:.. " + str(self.get_ewres_max())) 1409 STDSRasterMetadataBase.print_info(self) 1410 1411 def print_shell_info(self): 1412 """Print information about this class in shell style""" 1413 STDSRasterMetadataBase.print_shell_info(self) 1414 print("tbres_min=" + str(self.get_tbres_min())) 1415 print("tbres_max=" + str(self.get_tbres_max())) 1416 print("raster3d_register=" + str(self.get_raster3d_register())) 1417 1418############################################################################### 1419 1420 1421class STVDSMetadata(STDSMetadataBase): 1422 """This is the space time vector dataset metadata class 1423 1424 This class is the interface to the stvds_metadata table in the 1425 temporal database that stores the metadata of all registered 1426 space time vector datasets 1427 1428 Most of the metadata values are set by SQL scripts in the database when 1429 new vector maps are added. Therefor only some set- an many get-functions 1430 are available. 1431 1432 Usage: 1433 1434 .. code-block:: python 1435 1436 >>> init() 1437 >>> meta = STVDSMetadata(ident="lidars@PERMANENT", 1438 ... title="LIDARS", description="LIDARS 2008 - 2010") 1439 >>> meta.id 1440 'lidars@PERMANENT' 1441 >>> meta.title 1442 'LIDARS' 1443 >>> meta.description 1444 'LIDARS 2008 - 2010' 1445 >>> meta.number_of_maps 1446 >>> meta.number_of_points 1447 >>> meta.number_of_lines 1448 >>> meta.number_of_boundaries 1449 >>> meta.number_of_centroids 1450 >>> meta.number_of_faces 1451 >>> meta.number_of_kernels 1452 >>> meta.number_of_primitives 1453 >>> meta.number_of_nodes 1454 >>> meta.number_of_areas 1455 >>> meta.number_of_islands 1456 >>> meta.number_of_holes 1457 >>> meta.number_of_volumes 1458 >>> meta.print_info() 1459 +-------------------- Metadata information ----------------------------------+ 1460 | Vector register table:...... None 1461 | Number of points ........... None 1462 | Number of lines ............ None 1463 | Number of boundaries ....... None 1464 | Number of centroids ........ None 1465 | Number of faces ............ None 1466 | Number of kernels .......... None 1467 | Number of primitives ....... None 1468 | Number of nodes ............ None 1469 | Number of areas ............ None 1470 | Number of islands .......... None 1471 | Number of holes ............ None 1472 | Number of volumes .......... None 1473 | Number of registered maps:.. None 1474 | 1475 | Title: 1476 | LIDARS 1477 | Description: 1478 | LIDARS 2008 - 2010 1479 | Command history: 1480 >>> meta.print_shell_info() 1481 number_of_maps=None 1482 vector_register=None 1483 points=None 1484 lines=None 1485 boundaries=None 1486 centroids=None 1487 faces=None 1488 kernels=None 1489 primitives=None 1490 nodes=None 1491 areas=None 1492 islands=None 1493 holes=None 1494 volumes=None 1495 1496 """ 1497 def __init__(self, ident=None, vector_register=None, title=None, 1498 description=None): 1499 1500 STDSMetadataBase.__init__( 1501 self, "stvds_metadata", ident, title, description) 1502 1503 self.set_vector_register(vector_register) 1504 self.D["points"] = None 1505 self.D["lines"] = None 1506 self.D["boundaries"] = None 1507 self.D["centroids"] = None 1508 self.D["faces"] = None 1509 self.D["kernels"] = None 1510 self.D["primitives"] = None 1511 self.D["nodes"] = None 1512 self.D["areas"] = None 1513 self.D["islands"] = None 1514 self.D["holes"] = None 1515 self.D["volumes"] = None 1516 1517 def set_vector_register(self, vector_register): 1518 """Set the vector map register table name""" 1519 self.D["vector_register"] = vector_register 1520 1521 def get_vector_register(self): 1522 """Get the vector map register table name 1523 :return: None if not found""" 1524 if "vector_register" in self.D: 1525 return self.D["vector_register"] 1526 else: 1527 return None 1528 1529 def get_number_of_points(self): 1530 """Get the number of points of all registered maps, 1531 this value is set in the database 1532 automatically via SQL, so no setter exists 1533 :return: None if not found""" 1534 if "points" in self.D: 1535 return self.D["points"] 1536 else: 1537 return None 1538 1539 def get_number_of_lines(self): 1540 """Get the number of lines of all registered maps, 1541 this value is set in the database 1542 automatically via SQL, so no setter exists 1543 :return: None if not found""" 1544 if "lines" in self.D: 1545 return self.D["lines"] 1546 else: 1547 return None 1548 1549 def get_number_of_boundaries(self): 1550 """Get the number of boundaries of all registered maps, 1551 this value is set in the database 1552 automatically via SQL, so no setter exists 1553 :return: None if not found""" 1554 if "boundaries" in self.D: 1555 return self.D["boundaries"] 1556 else: 1557 return None 1558 1559 def get_number_of_centroids(self): 1560 """Get the number of centroids of all registered maps, 1561 this value is set in the database 1562 automatically via SQL, so no setter exists 1563 :return: None if not found""" 1564 if "centroids" in self.D: 1565 return self.D["centroids"] 1566 else: 1567 return None 1568 1569 def get_number_of_faces(self): 1570 """Get the number of faces of all registered maps, 1571 this value is set in the database 1572 automatically via SQL, so no setter exists 1573 :return: None if not found""" 1574 if "faces" in self.D: 1575 return self.D["faces"] 1576 else: 1577 return None 1578 1579 def get_number_of_kernels(self): 1580 """Get the number of kernels of all registered maps, 1581 this value is set in the database 1582 automatically via SQL, so no setter exists 1583 :return: None if not found""" 1584 if "kernels" in self.D: 1585 return self.D["kernels"] 1586 else: 1587 return None 1588 1589 def get_number_of_primitives(self): 1590 """Get the number of primitives of all registered maps, 1591 this value is set in the database 1592 automatically via SQL, so no setter exists 1593 :return: None if not found""" 1594 if "primitives" in self.D: 1595 return self.D["primitives"] 1596 else: 1597 return None 1598 1599 def get_number_of_nodes(self): 1600 """Get the number of nodes of all registered maps, 1601 this value is set in the database 1602 automatically via SQL, so no setter exists 1603 :return: None if not found""" 1604 if "nodes" in self.D: 1605 return self.D["nodes"] 1606 else: 1607 return None 1608 1609 def get_number_of_areas(self): 1610 """Get the number of areas of all registered maps, 1611 this value is set in the database 1612 automatically via SQL, so no setter exists 1613 :return: None if not found""" 1614 if "areas" in self.D: 1615 return self.D["areas"] 1616 else: 1617 return None 1618 1619 def get_number_of_islands(self): 1620 """Get the number of islands of all registered maps, 1621 this value is set in the database 1622 automatically via SQL, so no setter exists 1623 :return: None if not found""" 1624 if "islands" in self.D: 1625 return self.D["islands"] 1626 else: 1627 return None 1628 1629 def get_number_of_holes(self): 1630 """Get the number of holes of all registered maps, 1631 this value is set in the database 1632 automatically via SQL, so no setter exists 1633 :return: None if not found""" 1634 if "holes" in self.D: 1635 return self.D["holes"] 1636 else: 1637 return None 1638 1639 def get_number_of_volumes(self): 1640 """Get the number of volumes of all registered maps, 1641 this value is set in the database 1642 automatically via SQL, so no setter exists 1643 :return: None if not found""" 1644 if "volumes" in self.D: 1645 return self.D["volumes"] 1646 else: 1647 return None 1648 1649 # Set the properties 1650 vector_register = property(fget=get_vector_register, 1651 fset=set_vector_register) 1652 number_of_points = property(fget=get_number_of_points) 1653 number_of_lines = property(fget=get_number_of_lines) 1654 number_of_boundaries = property(fget=get_number_of_boundaries) 1655 number_of_centroids = property(fget=get_number_of_centroids) 1656 number_of_faces = property(fget=get_number_of_faces) 1657 number_of_kernels = property(fget=get_number_of_kernels) 1658 number_of_primitives = property(fget=get_number_of_primitives) 1659 number_of_nodes = property(fget=get_number_of_nodes) 1660 number_of_areas = property(fget=get_number_of_areas) 1661 number_of_islands = property(fget=get_number_of_islands) 1662 number_of_holes = property(fget=get_number_of_holes) 1663 number_of_volumes = property(fget=get_number_of_volumes) 1664 1665 def print_info(self): 1666 """Print information about this class in human readable style""" 1667 print(" +-------------------- Metadata information ----------------------------------+") 1668 # 0123456789012345678901234567890 1669 print(" | Vector register table:...... " + str( 1670 self.get_vector_register())) 1671 print(" | Number of points ........... " + str(self.number_of_points)) 1672 print(" | Number of lines ............ " + str(self.number_of_lines)) 1673 print(" | Number of boundaries ....... " + str(self.number_of_boundaries)) 1674 print(" | Number of centroids ........ " + str(self.number_of_centroids)) 1675 print(" | Number of faces ............ " + str(self.number_of_faces)) 1676 print(" | Number of kernels .......... " + str(self.number_of_kernels)) 1677 print(" | Number of primitives ....... " + str(self.number_of_primitives)) 1678 print(" | Number of nodes ............ " + str(self.number_of_nodes)) 1679 print(" | Number of areas ............ " + str(self.number_of_areas)) 1680 print(" | Number of islands .......... " + str(self.number_of_islands)) 1681 print(" | Number of holes ............ " + str(self.number_of_holes)) 1682 print(" | Number of volumes .......... " + str(self.number_of_volumes)) 1683 STDSMetadataBase.print_info(self) 1684 1685 def print_shell_info(self): 1686 """Print information about this class in shell style""" 1687 STDSMetadataBase.print_shell_info(self) 1688 print("vector_register=" + str(self.get_vector_register())) 1689 print("points=" + str(self.get_number_of_points())) 1690 print("lines=" + str(self.get_number_of_lines())) 1691 print("boundaries=" + str(self.get_number_of_boundaries())) 1692 print("centroids=" + str(self.get_number_of_centroids())) 1693 print("faces=" + str(self.get_number_of_faces())) 1694 print("kernels=" + str(self.get_number_of_kernels())) 1695 print("primitives=" + str(self.get_number_of_primitives())) 1696 print("nodes=" + str(self.get_number_of_nodes())) 1697 print("areas=" + str(self.get_number_of_areas())) 1698 print("islands=" + str(self.get_number_of_islands())) 1699 print("holes=" + str(self.get_number_of_holes())) 1700 print("volumes=" + str(self.get_number_of_volumes())) 1701 1702############################################################################### 1703 1704if __name__ == "__main__": 1705 import doctest 1706 doctest.testmod() 1707