For over 20+ years since 1997, I have developed custom GIS solutions to manage critical infrastructure and optimize operations for public utilities across the Pacific Islands. This GitHub repository is my contribution to the Pacific Islands FOSS4G - Free and Open Source Software for Geospatial community by publicly open-sourcing over 45,000 lines of code and modules created with MapBasic for MapInfo to solve real-world challenges.
As a GIS specialist and geospatial database developer, I helped architect and design integrated mapping systems from the ground up for various island utilities including power, water, telecommunications, airports and disaster management agencies. These map-centric solutions revolutionized asset management through data centralization, workflow automation, field mobility, and spatial analytics.
Given the success of driving impact through technology across the Pacific, I believe open-sourcing code to navigate remote communities' unique challenges can empower other developers.
This repository organizes work spanning 8 Pacific Island countries across aerodrome data management, rainwater harvesting modeling, electric utility optimization, pearl farm site analysis, and telecom planning.
I welcome any feedback, suggestions, or enhancements! Please reach out if you have any other use cases where these modules could provide a foundation. It's time to give back.
Let's leverage geospatial systems to build a better world together. 🛠
Open Sourcing in the Pacific - A Call to Action
I shared my journey open sourcing decades of custom GIS code created to optimize utilities across the Pacific Islands on LinkedIn. The response has been humbling, including Lynnold Misifea Wini. Lynnold Misifea Wini's comment: "Awesome. Pacific Islands developers should be doing more of this. Sharing and peer-reviewing code. Wonder if there is any initiative to do this?"
This sparks an important realization - while I've made a start, there is much more we can do as a community to build skills in open source contribution. Pioneers like Les Allinson (RIP), Franck Martin and Dr. Wolf Forstreuter were instrumental in leading efforts providing hands-on mentorship in open sourcing the early days of geospatial development in our region.
I am now reaching out to carry on the torch in providing advocacy and capacity building in:
-
Cataloging and publishing code to GitHub
-
Writing clear documentation and summaries
-
Structuring projects for collaboration
-
Managing issues and pull requests
-
Providing respectful code reviews
Open source is founded on transparency and collective growth. By coaching emerging developers in the Pacific on how to effectively share their work for feedback, we empower innovation.
If you're interested in volunteering your time to run workshops, share tutorials, or peer mentor new open source contributors, please connect with me. This is not about fame or recognition. It's about uplifting each other to create better solutions that improve lives.
The time is now to build our capacity. Our remote islands have unique challenges that technology can help overcome, but only if we work together. I'm excited to see what we can achieve by connecting Pasifika coders to the global community.
Let's share, review, and enhance each other's work - transparently and openly. The future is open source.
Contributors
- Les Allinson
- Franck Martin
- Dr. Wolf Forstreuter
- Edwin Liava'a
Systems
- Airport Fiji Ltd Aerodrome Data Managemnt
- Nauru Rainwater Harvesting
- Tuvalu Rainwater Harvesting
- Cook Islands Pearl Farms
- PNG Power Ltd
- Solomon Islands Power Authority
- Electric Power Corporation of Samoa
- Tonga Electric Power Board
- Tonga Communication Corporation
Special Editions
45,832 total lines of code
- 30 ./fij-airport/mapbasic/about.mb
- 90 ./fij-airport/mapbasic/afl_lib.mb
- 31 ./fij-airport/mapbasic/finish.mb
- 45 ./fij-airport/mapbasic/main.mb
- 160 ./fij-airport/mapbasic/map_ifr.mb
- 86 ./fij-airport/mapbasic/menus.mb
- 37 ./fij-airport/mapbasic/nadi_rec.mb
- 30 ./fij-airport/mapbasic/notyetreleased.mb
- 46 ./fij-airport/mapbasic/wl_count_am.mb
- 60 ./nau-rain/mapbasic/asset_items.mb
- 112 ./nau-rain/mapbasic/consumptionhouse.mb
- 112 ./nau-rain/mapbasic/daysnorain.mb
- 113 ./nau-rain/mapbasic/daystofilltanksb.mb
- 111 ./nau-rain/mapbasic/daystofilltanks.mb
- 113 ./nau-rain/mapbasic/daystofilltanksn.mb
- 111 ./nau-rain/mapbasic/downpipecondition.mb
- 113 ./nau-rain/mapbasic/guttercondition.mb
- 115 ./nau-rain/mapbasic/guttermaterial.mb
- 114 ./nau-rain/mapbasic/gutterpercent.mb
- 115 ./nau-rain/mapbasic/gutterwidth.mb
- 114 ./nau-rain/mapbasic/houseutilisation.mb
- 104 ./nau-rain/mapbasic/maproofconnect.mb
- 113 ./nau-rain/mapbasic/maproofmaterial.mb
- 111 ./nau-rain/mapbasic/maproofpartgutter.mb
- 36 ./nau-rain/mapbasic/maps.mb
- 113 ./nau-rain/mapbasic/mapstorageperson.mb
- 119 ./nau-rain/mapbasic/mapwastedisposal.mb
- 108 ./nau-rain/mapbasic/nodownpipe.mb
- 110 ./nau-rain/mapbasic/numbertanks.mb
- 111 ./nau-rain/mapbasic/personperhouse.mb
- 83 ./nau-rain/mapbasic/rainwatermain.mb
- 109 ./nau-rain/mapbasic/roofcondition.mb
- 111 ./nau-rain/mapbasic/roofslope.mb
- 114 ./nau-rain/mapbasic/tankcapacity.mb
- 112 ./nau-rain/mapbasic/treecover.mb
- 23 ./nau-rain/mapbasic/update_roofs.mb
- 32 ./nau-rain/mapbasic/utilities.mb
- 36 ./nau-rain/mapbasic/water_catch.mb
- 32 ./nau-rain/mapbasic/water_consumption.mb
- 679 ./png-power/mapbasic/calc_network_loss_latest.mb
- 723 ./png-power/mapbasic/calc_network_loss.mb
- 671 ./png-power/mapbasic/calc_network_loss_old.mb
- 68 ./png-power/mapbasic/change_lines_objects.mb
- 494 ./png-power/mapbasic/createln_hv.mb
- 468 ./png-power/mapbasic/createln_lv.mb
- 246 ./png-power/mapbasic/createppl_ids.mb
- 351 ./png-power/mapbasic/cutln_lv.mb
- 74 ./png-power/mapbasic/dispbd_qb_1.mb
- 74 ./png-power/mapbasic/dispbd_qb_2.mb
- 74 ./png-power/mapbasic/dispbd_qb_3.mb
- 74 ./png-power/mapbasic/dispbd_qb_4.mb
- 74 ./png-power/mapbasic/dispbd_qb_5.mb
- 74 ./png-power/mapbasic/dispbd_qb_6.mb
- 74 ./png-power/mapbasic/dispbd_qb_7.mb
- 74 ./png-power/mapbasic/dispbd_qb_8.mb
- 74 ./png-power/mapbasic/dispbd_qb_9.mb
- 74 ./png-power/mapbasic/dispbd_qb_all_tiles.mb
- 82 ./png-power/mapbasic/dispbl.mb
- 82 ./png-power/mapbasic/dispbr.mb
- 82 ./png-power/mapbasic/dispbu.mb
- 75 ./png-power/mapbasic/dispcen_coast.mb
- 82 ./png-power/mapbasic/dispes.mb
- 82 ./png-power/mapbasic/dispgn.mb
- 102 ./png-power/mapbasic/disphv_feeder.mb
- 98 ./png-power/mapbasic/disphv_ug.mb
- 82 ./png-power/mapbasic/disphy.mb
- 82 ./png-power/mapbasic/dispis.mb
- 82 ./png-power/mapbasic/displa.mb
- 84 ./png-power/mapbasic/displn_hv.mb
- 83 ./png-power/mapbasic/displn_lv.mb
- 116 ./png-power/mapbasic/displn_phase.mb
- 102 ./png-power/mapbasic/displv_feeder.mb
- 184 ./png-power/mapbasic/dispmt_byfd.mb
- 110 ./png-power/mapbasic/dispmt_highcon.mb
- 82 ./png-power/mapbasic/dispmt.mb
- 84 ./png-power/mapbasic/dispmt_precon.mb
- 84 ./png-power/mapbasic/dispmt_sealed.mb
- 80 ./png-power/mapbasic/dispnd.mb
- 184 ./png-power/mapbasic/disppl_byfd.mb
- 93 ./png-power/mapbasic/disppl_cond.mb
- 102 ./png-power/mapbasic/disppl_gencond.mb
- 89 ./png-power/mapbasic/disppl_light.mb
- 82 ./png-power/mapbasic/disppl.mb
- 85 ./png-power/mapbasic/disppl_owner.mb
- 95 ./png-power/mapbasic/disppl_staycond.mb
- 88 ./png-power/mapbasic/disppl_telco.mb
- 95 ./png-power/mapbasic/disppl_xarm_cond.mb
- 75 ./png-power/mapbasic/disppom_ndpc.mb
- 80 ./png-power/mapbasic/dispps.mb
- 183 ./png-power/mapbasic/dispsg_byfd.mb
- 97 ./png-power/mapbasic/dispsg_cond.mb
- 82 ./png-power/mapbasic/dispsg.mb
- 82 ./png-power/mapbasic/dispst.mb
- 82 ./png-power/mapbasic/dispth.mb
- 82 ./png-power/mapbasic/disptt.mb
- 80 ./png-power/mapbasic/disptw.mb
- 107 ./png-power/mapbasic/disptx_balance.mb
- 132 ./png-power/mapbasic/disptx_byfd.mb
- 90 ./png-power/mapbasic/disptx_cond.mb
- 82 ./png-power/mapbasic/disptx.mb
- 111 ./png-power/mapbasic/disptx_totalconsump.mb
- 82 ./png-power/mapbasic/dispzn.mb
- 273 ./png-power/mapbasic/find_asset.mb
- 183 ./png-power/mapbasic/find_meter.mb
- 137 ./png-power/mapbasic/find_noconnectmt.mb
- 141 ./png-power/mapbasic/find_noconnectpl.mb
- 115 ./png-power/mapbasic/find_noconnecttx.mb
- 106 ./png-power/mapbasic/fix_nospatial_ln_hv.mb
- 104 ./png-power/mapbasic/fix_nospatial_ln_lv.mb
- 105 ./png-power/mapbasic/fix_nospatial_pl.mb
- 113 ./png-power/mapbasic/fixpipes_create_nodes.mb
- 442 ./png-power/mapbasic/fix_ppl_ids.mb
- 91 ./png-power/mapbasic/importpom_billing_kwh_data.mb
- 113 ./png-power/mapbasic/importpom_cre_kwh.mb
- 900 ./png-power/mapbasic/loss_calculation.mb
- 196 ./png-power/mapbasic/main_menu.mb
- 30 ./png-power/mapbasic/notyetreleased.mb
- 55 ./png-power/mapbasic/ppl_lib.mb
- 79 ./png-power/mapbasic/ppl_main.mb
- 89 ./png-power/mapbasic/removenonlinesobjs.mb
- 87 ./png-power/mapbasic/removenonpointsobjs.mb
- 87 ./png-power/mapbasic/removenonpolygonobjs.mb
- 747 ./png-power/mapbasic/updatelineshv.mb
- 347 ./png-power/mapbasic/updatelineslv.mb
- 116 ./png-power/mapbasic/updatepoints.mb
- 207 ./png-power/mapbasic/updateregions.mb
- 750 ./png-power/mapbasic/updatesu1.mb
- 122 ./png-power/mapbasic/updatesu2a.mb
- 411 ./png-power/mapbasic/updatesu2b.mb
- 257 ./png-power/mapbasic/updatesu2c.mb
- 134 ./png-power/mapbasic/updatesu2.mb
- 87 ./png-power/mapbasic/updatetxtobjs.mb
- 30 ./rar-pearl/mapbasic/about.mb
- 74 ./rar-pearl/mapbasic/dispanchors.mb
- 75 ./rar-pearl/mapbasic/dispbackdrop.mb
- 74 ./rar-pearl/mapbasic/dispbuffers.mb
- 75 ./rar-pearl/mapbasic/dispcontours.mb
- 74 ./rar-pearl/mapbasic/dispfarms_2011.mb
- 74 ./rar-pearl/mapbasic/dispfarms_97.mb
- 74 ./rar-pearl/mapbasic/displayers_template.mb
- 74 ./rar-pearl/mapbasic/displines.mb
- 74 ./rar-pearl/mapbasic/dispseedhouse.mb
- 30 ./rar-pearl/mapbasic/finish.mb
- 45 ./rar-pearl/mapbasic/main.mb
- 106 ./rar-pearl/mapbasic/menus.mb
- 89 ./rar-pearl/mapbasic/mmr_lib.mb
- 30 ./rar-pearl/mapbasic/notyetreleased.mb
- 70 ./rar-pearl/mapbasic/update_anchors.mb
- 83 ./rar-pearl/mapbasic/update_lines.mb
- 386 ./sam-power/mapbasic/createln_hv.mb
- 432 ./sam-power/mapbasic/createln_lv.mb
- 62 ./sam-power/mapbasic/cremeactions.mb
- 63 ./sam-power/mapbasic/cremecommon.mb
- 64 ./sam-power/mapbasic/cremelayers.mb
- 66 ./sam-power/mapbasic/cremequeries.mb
- 300 ./sam-power/mapbasic/cutln_lv.mb
- 77 ./sam-power/mapbasic/dispbd_qb_all_tiles.mb
- 77 ./sam-power/mapbasic/dispbd_qb_tile1.mb
- 77 ./sam-power/mapbasic/dispbd_qb_tile2.mb
- 77 ./sam-power/mapbasic/dispbd_qb_tile3.mb
- 80 ./sam-power/mapbasic/dispbl.mb
- 80 ./sam-power/mapbasic/dispbr.mb
- 80 ./sam-power/mapbasic/dispbu.mb
- 80 ./sam-power/mapbasic/dispgn.mb
- 102 ./sam-power/mapbasic/disphv_feeder.mb
- 98 ./sam-power/mapbasic/disphv_ug.mb
- 77 ./sam-power/mapbasic/displn_hv.mb
- 77 ./sam-power/mapbasic/displn_lv.mb
- 116 ./sam-power/mapbasic/displn_phase.mb
- 102 ./sam-power/mapbasic/displv_feeder.mb
- 80 ./sam-power/mapbasic/dispmt.mb
- 106 ./sam-power/mapbasic/dispmt_precon.mb
- 80 ./sam-power/mapbasic/dispnd.mb
- 89 ./sam-power/mapbasic/disppl_light.mb
- 80 ./sam-power/mapbasic/disppl.mb
- 85 ./sam-power/mapbasic/disppl_owner.mb
- 88 ./sam-power/mapbasic/disppl_telco.mb
- 80 ./sam-power/mapbasic/dispps.mb
- 107 ./sam-power/mapbasic/disptx_balance.mb
- 86 ./sam-power/mapbasic/disptx_byfd.mb
- 80 ./sam-power/mapbasic/disptx.mb
- 111 ./sam-power/mapbasic/disptx_totalconsump.mb
- 88 ./sam-power/mapbasic/epc_lib.mb
- 77 ./sam-power/mapbasic/epc_main.mb
- 281 ./sam-power/mapbasic/find_epcasset.mb
- 137 ./sam-power/mapbasic/find_noconnectmt.mb
- 141 ./sam-power/mapbasic/find_noconnectpl.mb
- 115 ./sam-power/mapbasic/find_noconnecttx.mb
- 105 ./sam-power/mapbasic/fix_nospatial_ln_hv.mb
- 103 ./sam-power/mapbasic/fix_nospatial_ln_lv.mb
- 35 ./sam-power/mapbasic/notyetreleased.mb
- 157 ./sam-power/mapbasic/updatelineshv.mb
- 168 ./sam-power/mapbasic/updatelineslv.mb
- 116 ./sam-power/mapbasic/updatepoints.mb
- 207 ./sam-power/mapbasic/updateregions.mb
- 750 ./sam-power/mapbasic/updatesu1.mb
- 122 ./sam-power/mapbasic/updatesu2a.mb
- 411 ./sam-power/mapbasic/updatesu2b.mb
- 257 ./sam-power/mapbasic/updatesu2c.mb
- 134 ./sam-power/mapbasic/updatesu2.mb
- 140 ./sol-power/mapbasic/create_ids.mb
- 345 ./sol-power/mapbasic/createln_hv.mb
- 436 ./sol-power/mapbasic/createln_lv.mb
- 301 ./sol-power/mapbasic/cutln_lv.mb
- 74 ./sol-power/mapbasic/dispbd_qb_all_tiles.mb
- 80 ./sol-power/mapbasic/dispbl.mb
- 80 ./sol-power/mapbasic/dispbr.mb
- 80 ./sol-power/mapbasic/dispbu.mb
- 80 ./sol-power/mapbasic/dispgn.mb
- 102 ./sol-power/mapbasic/disphv_feeder.mb
- 98 ./sol-power/mapbasic/disphv_ug.mb
- 77 ./sol-power/mapbasic/displn_hv.mb
- 77 ./sol-power/mapbasic/displn_lv.mb
- 116 ./sol-power/mapbasic/displn_phase.mb
- 102 ./sol-power/mapbasic/displv_feeder.mb
- 75 ./sol-power/mapbasic/dispmt.mb
- 106 ./sol-power/mapbasic/dispmt_precon.mb
- 80 ./sol-power/mapbasic/dispnd.mb
- 89 ./sol-power/mapbasic/disppl_light.mb
- 78 ./sol-power/mapbasic/disppl.mb
- 85 ./sol-power/mapbasic/disppl_owner.mb
- 88 ./sol-power/mapbasic/disppl_telco.mb
- 80 ./sol-power/mapbasic/dispps.mb
- 107 ./sol-power/mapbasic/disptx_balance.mb
- 86 ./sol-power/mapbasic/disptx_byfd.mb
- 78 ./sol-power/mapbasic/disptx.mb
- 111 ./sol-power/mapbasic/disptx_totalconsump.mb
- 279 ./sol-power/mapbasic/find_asset.mb
- 137 ./sol-power/mapbasic/find_noconnectmt.mb
- 141 ./sol-power/mapbasic/find_noconnectpl.mb
- 115 ./sol-power/mapbasic/find_noconnecttx.mb
- 105 ./sol-power/mapbasic/fix_nospatial_ln_hv.mb
- 103 ./sol-power/mapbasic/fix_nospatial_ln_lv.mb
- 113 ./sol-power/mapbasic/fixpipes_create_nodes.mb
- 1923 ./sol-power/mapbasic/grid.mb
- 138 ./sol-power/mapbasic/main_menu.mb
- 30 ./sol-power/mapbasic/notyetreleased.mb
- 89 ./sol-power/mapbasic/removenonlinesobjs.mb
- 87 ./sol-power/mapbasic/removenonpointsobjs.mb
- 55 ./sol-power/mapbasic/siea_lib.mb
- 61 ./sol-power/mapbasic/siea_main.mb
- 158 ./sol-power/mapbasic/updatelineshv.mb
- 168 ./sol-power/mapbasic/updatelineslv.mb
- 116 ./sol-power/mapbasic/updatepoints.mb
- 207 ./sol-power/mapbasic/updateregions.mb
- 750 ./sol-power/mapbasic/updatesu1.mb
- 122 ./sol-power/mapbasic/updatesu2a.mb
- 411 ./sol-power/mapbasic/updatesu2b.mb
- 257 ./sol-power/mapbasic/updatesu2c.mb
- 134 ./sol-power/mapbasic/updatesu2.mb
- 137 ./ton-power/mapbasic/agetrans.mb
- 142 ./ton-power/mapbasic/allcclas.mb
- 152 ./ton-power/mapbasic/allptype.mb
- 139 ./ton-power/mapbasic/constran.mb
- 54 ./ton-power/mapbasic/crmecust.mb
- 40 ./ton-power/mapbasic/crmeline.mb
- 51 ./ton-power/mapbasic/crmemetr.mb
- 42 ./ton-power/mapbasic/crmepole.mb
- 46 ./ton-power/mapbasic/crmetran.mb
- 144 ./ton-power/mapbasic/cuspfuse.mb
- 199 ./ton-power/mapbasic/custclas.mb
- 207 ./ton-power/mapbasic/custcond.mb
- 200 ./ton-power/mapbasic/feedersl.mb
- 130 ./ton-power/mapbasic/hvtypetr.mb
- 195 ./ton-power/mapbasic/insmonm.mb
- 214 ./ton-power/mapbasic/insmont.mb
- 294 ./ton-power/mapbasic/lin_cut2.mb
- 129 ./ton-power/mapbasic/lineprot.mb
- 145 ./ton-power/mapbasic/linesvol.mb
- 166 ./ton-power/mapbasic/locacust.mb
- 138 ./ton-power/mapbasic/locametr.mb
- 167 ./ton-power/mapbasic/locapole.mb
- 146 ./ton-power/mapbasic/locatran.mb
- 165 ./ton-power/mapbasic/loccustl.mb
- 165 ./ton-power/mapbasic/loccustm.mb
- 163 ./ton-power/mapbasic/loccustp.mb
- 224 ./ton-power/mapbasic/locmettp.mb
- 123 ./ton-power/mapbasic/lvtypetr.mb
- 132 ./ton-power/mapbasic/maxpowtr.mb
- 112 ./ton-power/mapbasic/metnocon.mb
- 339 ./ton-power/mapbasic/nbconstr.mb
- 46 ./ton-power/mapbasic/password.mb
- 199 ./ton-power/mapbasic/phastype.mb
- 207 ./ton-power/mapbasic/polecons.mb
- 204 ./ton-power/mapbasic/poletype.mb
- 143 ./ton-power/mapbasic/strelght.mb
- 61 ./ton-power/mapbasic/tepbmain.mb
- 101 ./ton-power/mapbasic/typemetr.mb
- 108 ./ton-power/mapbasic/typinstr.mb
- 30 ./ton-telco/mapbasic/about.mb
- 75 ./ton-telco/mapbasic/dispbl.mb
- 75 ./ton-telco/mapbasic/dispcb.mb
- 75 ./ton-telco/mapbasic/dispcr.mb
- 75 ./ton-telco/mapbasic/dispct.mb
- 75 ./ton-telco/mapbasic/dispex.mb
- 75 ./ton-telco/mapbasic/dispmh.mb
- 75 ./ton-telco/mapbasic/dispn_cad.mb
- 75 ./ton-telco/mapbasic/disppg.mb
- 75 ./ton-telco/mapbasic/disppl.mb
- 75 ./ton-telco/mapbasic/disppr.mb
- 75 ./ton-telco/mapbasic/disppt.mb
- 45 ./ton-telco/mapbasic/dispt_qbd.mb
- 75 ./ton-telco/mapbasic/dispzo.mb
- 30 ./ton-telco/mapbasic/finish.mb
- 52 ./ton-telco/mapbasic/main.mb
- 130 ./ton-telco/mapbasic/menus.mb
- 30 ./ton-telco/mapbasic/notyetreleased.mb
- 49 ./ton-telco/mapbasic/save_to_tg2005.mb
- 89 ./ton-telco/mapbasic/tcc_lib.mb
- 58 ./tuv-rain/mapbasic/asset_items.mb
- 113 ./tuv-rain/mapbasic/consumptionhouse.mb
- 112 ./tuv-rain/mapbasic/daysnorain.mb
- 113 ./tuv-rain/mapbasic/daystofilltanksb.mb
- 111 ./tuv-rain/mapbasic/daystofilltanks.mb
- 113 ./tuv-rain/mapbasic/daystofilltanksn.mb
- 111 ./tuv-rain/mapbasic/downpipecondition.mb
- 113 ./tuv-rain/mapbasic/guttercondition.mb
- 115 ./tuv-rain/mapbasic/guttermaterial.mb
- 114 ./tuv-rain/mapbasic/gutterpercent.mb
- 115 ./tuv-rain/mapbasic/gutterwidth.mb
- 114 ./tuv-rain/mapbasic/houseutilisation.mb
- 103 ./tuv-rain/mapbasic/maproofconnect.mb
- 113 ./tuv-rain/mapbasic/maproofmaterial.mb
- 111 ./tuv-rain/mapbasic/maproofpartgutter.mb
- 36 ./tuv-rain/mapbasic/maps.mb
- 113 ./tuv-rain/mapbasic/mapstorageperson.mb
- 108 ./tuv-rain/mapbasic/nodownpipe.mb
- 110 ./tuv-rain/mapbasic/numbertanks.mb
- 111 ./tuv-rain/mapbasic/personperhouse.mb
- 83 ./tuv-rain/mapbasic/rainwatermain.mb
- 109 ./tuv-rain/mapbasic/roofcondition.mb
- 111 ./tuv-rain/mapbasic/roofslope.mb
- 114 ./tuv-rain/mapbasic/tankcapacity.mb
- 112 ./tuv-rain/mapbasic/treecover.mb
- 23 ./tuv-rain/mapbasic/update_roofs.mb
- 32 ./tuv-rain/mapbasic/utilities.mb
- 36 ./tuv-rain/mapbasic/water_catch.mb
- 32 ./tuv-rain/mapbasic/water_consumption.mb