metadata.py 59 KB

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