Jekyll2024-01-08T11:24:05+01:00http://www.quanpan302.com/atom.xmlQPanPlaygroundQuan PanIMAGE 3.02019-01-02T00:00:00+01:002019-01-02T14:00:00+01:00http://www.quanpan302.com/kg/IMAGE3<p><strong><a href="https://models.pbl.nl/image/index.php/Welcome_to_IMAGE_3.0_Documentation" target="_blank">IMAGE3.0</a>, PBL, NL, <a href="/assets/images/posts/2019-01-02-IMAGE3/integrated_assessment_of_global_environmental_change.pdf" target="_blank">Documentation</a></strong></p>
<ul>
<li><a href="#framework">Framework</a></li>
<li><a href="#flowchart">Flowchart</a></li>
</ul>
<p><a href="https://en.wikipedia.org/wiki/Integrated_assessment_modelling" target="_blank">Integrated assessment model</a></p>
<h2 id="framework">Framework</h2>
<p><a href="/assets/images/posts/2019-01-02-IMAGE3/Framework.png" target="_blank">
<img src="/assets/images/posts/2019-01-02-IMAGE3/Framework.png" alt="" />
</a></p>
<h2 id="flowchart">Flowchart</h2>
<p><a href="/assets/images/posts/2019-01-02-IMAGE3/BigFlowchart.png" target="_blank">
<img src="/assets/images/posts/2019-01-02-IMAGE3/BigFlowchart.png" alt="" />
</a></p>Quan PanIMAGE3.0, PBL, NL, DocumentationEnvironmental Science2019-01-01T00:00:00+01:002019-01-01T14:00:00+01:00http://www.quanpan302.com/kg/EnvironmentalScience<p><strong><a href="https://en.wikipedia.org/wiki/Category:Environmental_science">Environmental science</a></strong> is an interdisciplinary academic field that integrates <strong>physical</strong>, <strong>biological</strong> and <strong>information sciences</strong> (including ecology, biology, physics, chemistry, plant science, zoology, mineralogy, oceanography, limnology, soil science, geology and physical geography, and atmospheric science) to the <em>study</em> of the environment, and the <em>solution</em> of environmental problems.</p>
<ul>
<li><a href="#components">Components</a></li>
<li><a href="#impact-assessment">Impact Assessment</a></li>
<li><a href="#ecosystem-modeltarget_blank-ecological-modelling">Ecosystem model{:target=”_blank”} (Ecological Modelling)</a>
<ul>
<li><a href="#species-distribution-modellingtarget_blank">Species distribution modelling{:target=”_blank”}</a></li>
</ul>
</li>
<li><a href="#environmental-restorationtarget_blank">Environmental Restoration{:target=”_blank”}</a>
<ul>
<li><a href="#approaches">Approaches</a></li>
</ul>
</li>
<li><a href="#restoration-ecologytarget_blank">Restoration Ecology{:target=”_blank”}</a></li>
<li><a href="#book">Book</a>
<ul>
<li><a href="#foundations-of-restoration-ecology-by-donald-a-falk-margaret-a-palmer-and-joy-b-zedler">“FOUNDATIONS OF RESTORATION ECOLOGY” by Donald A. Falk, Margaret A. Palmer, and Joy B. Zedler</a>
<ul>
<li><a href="#ecological-theory-and-restoration-ecology">Ecological Theory and Restoration Ecology</a></li>
<li><a href="#population-and-ecological-genetics-in-restoration-ecology">Population and Ecological Genetics in Restoration Ecology</a></li>
</ul>
</li>
<li><a href="#ecological-informatics-by-michener-william-k-recknagel-friedrich">“Ecological Informatics”, by Michener, William K. Recknagel, Friedrich</a></li>
</ul>
</li>
<li><a href="#links">Links</a>
<ul>
<li><a href="#official">Official</a></li>
<li><a href="#website">Website</a></li>
<li><a href="#projects">Projects</a></li>
</ul>
</li>
<li><a href="#products">Products</a>
<ul>
<li><a href="#data">Data</a>
<ul>
<li><a href="#gedi-nasa-global-ecosystem-dynamics-investigationtarget_blank">GEDI, NASA, Global Ecosystem Dynamics Investigation{:target=”_blank”}</a></li>
<li><a href="#database">Database</a></li>
</ul>
</li>
<li><a href="#model">Model</a></li>
</ul>
</li>
</ul>
<p>Environmental science emerged from the fields of natural history and medicine during the Enlightenment. Today it provides an integrated, quantitative, and interdisciplinary approach to the study of environmental systems.</p>
<blockquote>
<p>A program that focuses on the application of biological, chemical, and physical principles to the study of the physical environment and the solution of environmental problems, including subjects such as abating or controlling environmental pollution and degradation; the interaction between human society and the natural environment; and natural resources management. Includes instruction in biology, chemistry, physics, geosciences, climatology, statistics, and mathematical modeling.</p>
</blockquote>
<h2 id="components">Components</h2>
<ul>
<li><strong>Atmospheric sciences</strong></li>
<li><strong>Ecology</strong></li>
<li><strong>Environmental chemistry</strong></li>
<li><strong>Geosciences</strong></li>
</ul>
<h2 id="impact-assessment">Impact Assessment</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Environmental_impact_assessment" target="_blank">Environmental impact assessment</a>, <a href="https://en.wikipedia.org/wiki/Category:Environmental_impact_assessment" target="_blank">Category</a>
<ul>
<li><a href="http://www.eia.nl/en" target="_blank">Netherlands Commission for Environmental Assessment</a></li>
<li><a href="https://www.iaia.org" target="_blank">International Association for Impact Assessment</a></li>
<li><a href="/assets/images/posts/2019-01-01-EnvironmentalScience/FAO-Environmental%20Impact%20Assessment.pdf" target="_blank">FAO</a></li>
</ul>
</li>
<li><a href="https://en.wikipedia.org/wiki/Environmental_impact_statement" target="_blank">Environmental impact statement</a></li>
</ul>
<h2 id="ecosystem-model-ecological-modelling"><a href="https://en.wikipedia.org/wiki/Ecosystem_model" target="_blank">Ecosystem model</a> (Ecological Modelling)</h2>
<p><strong>Ecosystem model</strong> is an abstract, usually mathematical, representation of an ecological system (ranging in scale from an individual population, to an ecological community, or even an entire biome (生物群落)), which is studied to better understand the real system.</p>
<p>There are two major types of ecological models, which are generally applied to different types of problems:</p>
<ol>
<li>Analytic models are typically relatively simple (often linear) systems, that can be accurately described by a set of mathematical equations whose behavior is well-known.</li>
<li>Simulation / Computational models use numerical techniques to solve problems for which analytic solutions are impractical or impossible.</li>
</ol>
<p><a href="http://ecobas.org/www-server/mod-info/all.html" target="_blank">Modelling and Simulation Links</a></p>
<h3 id="species-distribution-modelling"><a href="https://en.wikipedia.org/wiki/Species_distribution_modelling" target="_blank">Species distribution modelling</a></h3>
<h2 id="environmental-restoration"><a href="https://en.wikipedia.org/wiki/Environmental_restoration" target="_blank">Environmental Restoration</a></h2>
<p><strong>Environmental Restoration</strong> is closely allied with (or perhaps sometimes used interchangeably with) ecological restoration or environmental remediation.</p>
<h3 id="approaches">Approaches</h3>
<p>Environmental restoration involves many different approaches and technologies depending on the requirements of the situation.</p>
<ul>
<li>It can involve heavy equipment like cranes, graders, bulldozers, or excavators, and also hand processes like the planting of trees and other vegetation.</li>
<li>It can involve high-tech processes such as those applied in the careful environmental control required in fish-hatchery procedures.</li>
<li>Today, computerized regulation is often being utilized in these processes.</li>
<li>Computer-based mapping has also become an important dimension of restorative work, as has computer modelling.</li>
</ul>
<h2 id="restoration-ecology"><a href="https://en.wikipedia.org/wiki/Restoration_ecology" target="_blank">Restoration Ecology</a></h2>
<p><strong>Restoration Ecology</strong> is the scientific study supporting the practice of <strong>ecological restoration</strong>, which is the practice of renewing and restoring degraded, damaged, or destroyed ecosystems and habitats in the environment by active human intervention (介入) and action.</p>
<p>Effective restoration requires an explicit goal or policy, preferably an unambiguous (明确的) one that is articulated, accepted, and codified. Restoration goals reflect societal choices from among competing policy priorities, but extracting such goals is typically contentious and politically challenging.</p>
<h2 id="book">Book</h2>
<h3 id="foundations-of-restoration-ecology-by-donald-a-falk-margaret-a-palmer-and-joy-b-zedler">“FOUNDATIONS OF RESTORATION ECOLOGY” by Donald A. Falk, Margaret A. Palmer, and Joy B. Zedler</h3>
<p>The restorationist <strong>alters</strong>:</p>
<ul>
<li>The local distribution of <strong><em>light</em></strong> and <strong><em>energy</em></strong> aboveground, and <strong><em>water</em></strong> and <strong><em>chemistry</em></strong> belowground.</li>
<li>Postrestoration conditions may favor plants with different <strong><em>photosynthetic pathways</em></strong>, as well as species that can tolerate <strong><em>novel microclimatic conditions</em></strong> of temperature and humidity.</li>
<li>Belowground, plant tolerance for changes in <strong><em>macro- and micro nutrients</em></strong>, as well as exposure to increased concentrations of <strong><em>toxic metals</em></strong> and changes to <strong><em>soil pH</em></strong>, <strong><em>salinity</em></strong>, and <strong><em>water</em></strong>, can be critical to the outcome of restoration.</li>
<li>The altered hydrological environment can influence <strong><em>plant rooting depth</em></strong>, <strong><em>root/shoot allocation</em></strong>, and the reliance on <strong><em>mycorrhizal symbioses (菌根共生)</em></strong>.</li>
<li>Restoration exposes plants to a wide range of <strong><em>physiological stressors (生理应激源)</em></strong>, and outcomes will depend on the ability of species to tolerate altered environments.</li>
</ul>
<h4 id="ecological-theory-and-restoration-ecology">Ecological Theory and Restoration Ecology</h4>
<p>Ecological restoration is to move a damaged system to an ecological state that is within some acceptable limits relative to a less disturbed system.</p>
<p>Science-based restorations follow:</p>
<ul>
<li>explicitly stated goals</li>
<li>a restoration design informed by eco-logical knowledge</li>
<li>quantitative assessment of system responses employing pre- and postrestoration data collection</li>
<li>analysis and application of results to inform subsequent efforts</li>
</ul>
<p>Broad areas of ecological theory that are foundational to the science of restoration ecology:</p>
<ol>
<li>Ecological Theory and the Restoration of Populations and Communities (Page 24)
<ul>
<li>Population and ecological genetics</li>
<li>Ecophysiological and functional ecology</li>
<li>Demography (人口统计学), population dynamics, metapopulation ecology</li>
<li>Community ecology</li>
<li>Evolutionary ecology</li>
<li>Fine-scale heterogeneity (异质性)</li>
</ul>
</li>
<li>Restoring Ecological Function (Page 152)
<ul>
<li>Food webs</li>
<li>Ecological dynamics and trajectories</li>
<li>Biodiversity and ecosystem functioning</li>
<li>Modeling and simulations</li>
<li>Invasive species and community invasibility (社区入侵)</li>
</ul>
</li>
<li>Restoration Ecology in Context (Page 270)
<ul>
<li>Research design and statistical analysis</li>
<li>Macroecology (宏观生态学)</li>
<li>Paleoecology (古生态学), climate change</li>
</ul>
</li>
</ol>
<h4 id="population-and-ecological-genetics-in-restoration-ecology">Population and Ecological Genetics in Restoration Ecology</h4>
<h3 id="ecological-informatics-by-michener-william-k-recknagel-friedrich">“Ecological Informatics”, by Michener, William K. Recknagel, Friedrich</h3>
<p>Ecological Informatics is an emerging discipline that takes into account the data- intensive nature of ecology, the valuable information content of ecological data, and the need to communicate results and inform decisions, including those related to research, conservation and resource management.</p>
<p>Ecological Entities range from genomes, individual organisms, populations, communities, ecosystems to landscapes and the biosphere, and are highly complex and distinctly evolving.</p>
<ol>
<li>Managing Ecological Data</li>
<li>Analysis, Synthesis and Forecasting of Ecological Data</li>
<li>Case Studies</li>
</ol>
<h2 id="links">Links</h2>
<h3 id="official">Official</h3>
<ul>
<li>UN
<ul>
<li><strong>UNEP</strong>, <a href="https://www.unenvironment.org/" target="_blank">United Nations Environment Programme</a></li>
<li><strong>UNEP GRID-Geneva</strong>, <a href="https://unepgrid.ch/en" target="_blank">ited Nations Environment Programme, Global Resource Information Database at Geneva</a></li>
<li><strong>UNSD</strong>, <a href="https://unstats.un.org/unsd/envstats/qindicators.cshtml" target="_blank">United Nations Environmental Indicators</a></li>
</ul>
</li>
<li>Europ
<ul>
<li><strong>DGE</strong>, <a href="https://ec.europa.eu/environment/index_en.htm" target="_blank">European Commission Environment Directorate General</a></li>
<li><strong>Interreg</strong>, <a href="https://www.interreg-central.eu/Content.Node/Environment.html" target="_blank">Interreg CENTRAL EUROPE</a></li>
<li><strong>CEDAR</strong>, <a href="http://www.cedar.at/sitemap.htm" target="_blank">Central European Environmental Data Request Facility</a></li>
</ul>
</li>
<li>USA
<ul>
<li><strong>EPA</strong>, <a href="https://www.epa.gov/" target="_blank">United States, Environmental Protection Agency</a></li>
<li><strong>USGS</strong>, <a href="https://www.usgs.gov/" target="_blank">United States, Geological Survey</a></li>
</ul>
</li>
<li>Australia
<ul>
<li><a href="https://www.environment.gov.au/" target="_blank">Department of Agriculture, Water and the Environment</a></li>
<li><a href="https://www.planning.act.gov.au/tools-resources/survey-spatial-data-maps" target="_blank">Survey, spatial data and maps</a></li>
</ul>
</li>
<li>China
<ul>
<li><a href="http://english.mee.gov.cn/" target="_blank">Ministry of Ecology and Environment</a></li>
</ul>
</li>
<li>UK
<ul>
<li><a href="https://www.gov.uk/government/organisations/department-for-environment-food-rural-affairs" target="_blank">Department for Environment Food & Rural Affairs</a></li>
</ul>
</li>
</ul>
<h3 id="website">Website</h3>
<ul>
<li><a href="http://environment-ecology.com" target="_blank">Environment And Ecology</a></li>
<li><a href="https://www.nature.com/scitable/knowledge/library/restoration-ecology-13339059/" target="_blank">Nature</a></li>
</ul>
<h3 id="projects">Projects</h3>
<ul>
<li><a href="https://www.esciencecenter.nl/projects/eecolidar/" target="_blank">eEcoLiDAR</a>, eScience Center, Netherlands</li>
<li><a href="https://www.esciencecenter.nl/projects/birdradar/" target="_blank">BirdRadar</a>, eScience Center, Netherlands</li>
<li><a href="https://www.esciencecenter.nl/projects/eecology/" target="_blank">eEcology</a>, eScience Center, Netherlands</li>
</ul>
<h2 id="products">Products</h2>
<ul>
<li><a href="http://ecobas.org/" target="_blank">ECOBAS</a>
<ul>
<li><a href="http://ecobas.org/www-server/mod-info/show.php?%20%20%20%20%20%20%20%20%20%20%20URL=http://homepage.ruhr-uni-bochum.de/Michael.Knorrenschild/embooks.html&%20%20%20%20%20%20%20%20%20%20%20DT=List%20of%20ecological%20modelling%20books" target="_blank">List of Textbooks on Ecological Modelling</a></li>
<li><a href="http://ecobas.org/www-server/mod-info/all.html" target="_blank">Modelling and Simulation Links</a></li>
</ul>
</li>
</ul>
<h3 id="data">Data</h3>
<h4 id="gedi-nasa-global-ecosystem-dynamics-investigation">GEDI, <a href="https://gedi.umd.edu/" target="_blank">NASA, Global Ecosystem Dynamics Investigation</a></h4>
<table>
<thead>
<tr>
<th>Algorithm Theoretical Basis Documents (ATBDs)</th>
<th>ATBD name</th>
<th>Data products</th>
<th>Resolution</th>
<th>Version</th>
<th>Date</th>
</tr>
</thead>
<tbody>
<tr>
<td>L1A-2A</td>
<td>Transmit and Receive Waveform Interpretation and Generation of L1A and L2A products</td>
<td>1A: Raw waveforms, 2A: Ground elevation, canopy top height, relative height (RH) metrics</td>
<td>25 m (~82 ft) diameter</td>
<td><a href="/assets/images/posts/2019-01-01-EnvironmentalScience/" target="_blank">1.0.pdf</a></td>
<td>12-2019</td>
</tr>
<tr>
<td>L1B</td>
<td>Waveform Geolocation for L1 and L2 Products</td>
<td>Geolocated waveforms</td>
<td>25 m (~82 ft) diameter</td>
<td><a href="/assets/images/posts/2019-01-01-EnvironmentalScience/" target="_blank">1.0.pdf</a></td>
<td>12-2019</td>
</tr>
<tr>
<td>L2B</td>
<td>Footprint Canopy Cover and Vertical Profile Metrics</td>
<td>Canopy Cover Fraction (CCF), CCF profile, Leaf Area Index (LAI), LAI profile</td>
<td>25 m (~82 ft) diameter</td>
<td><a href="/assets/images/posts/2019-01-01-EnvironmentalScience/" target="_blank">1.0.pdf</a></td>
<td>12-2019</td>
</tr>
<tr>
<td>L3</td>
<td>Gridded Land Surface Metrics</td>
<td>Gridded Level 2 metrics</td>
<td>1 km (~0.6 mi) grid</td>
<td>1.0</td>
<td>TBD</td>
</tr>
<tr>
<td>L4A</td>
<td>Footprint Above Ground Biomass Density</td>
<td>Footprint level above ground biomass</td>
<td>25 m (~82 ft) diameter</td>
<td>1.0</td>
<td>TBD</td>
</tr>
<tr>
<td>L4B</td>
<td>Gridded Biomass Product</td>
<td>Gridded Above Ground Biomass Density (AGBD)</td>
<td>1 km (~0.6 mi) grid</td>
<td>1.0</td>
<td>TBD</td>
</tr>
</tbody>
</table>
<ul>
<li>ORNL, <a href="https://daac.ornl.gov/" target="_blank">Ridge National Laboratory, Distributed Active Archive Center</a></li>
<li>GBIF, <a href="https://www.gbif.org/" target="_blank">Global Biodiversity Information Facility </a></li>
<li>OBIS, <a href="https://obis.org/" target="_blank">Ocean Biodiversity Information System</a></li>
<li>GENESYS, <a href="https://www.genesys-pgr.org/" target="_blank">Plant Genetic Resources for Food and Agriculture (PGRFA)</a></li>
<li>BCCVL, <a href="http://bccvl.org.au/" target="_blank">Biodiversity and Climate Change Virtual Laboratory</a></li>
</ul>
<h4 id="database">Database</h4>
<ul>
<li>AR4 (IPCC) database (Subject:: climate, socio-economic and environmental data)</li>
<li>CRU database (Subject:: climate)</li>
<li>EDGAR database (Subject:: The Emissions Database for Global Atmospheric Research)</li>
<li>EU-watch database (Subject:: Climate)</li>
<li>Enerdata Global Energy & CO2 Data (Subject:: Enerdata Global Energy & CO2 Data)</li>
<li>FAOSTAT database (Subject:: agriculture, food)</li>
<li>GAINS database (Subject:: Air pollutants and greenhouse gases)</li>
<li>GLOBE Digital Elevation Model</li>
<li>GLWD database</li>
<li>GTAP database (Subject:: Economic data)</li>
<li>GlobCover database</li>
<li>HWSD database (Subject:: Soil properties)</li>
<li>HYDE database (Subject:: History Database of the Global Environment)</li>
<li>HydroSHEDS database (Subject:: Elevation)</li>
<li>IEA database (Subject:: energy)</li>
<li>IIASA database (Subject:: Land-use)</li>
<li>IUCN dataset (Subject:: Fishery)</li>
<li>Lake-Depth Data Set</li>
<li>S-World database</li>
<li>WDPA database (Subject:: Protected areas)</li>
<li>WEC-Uranium (Subject:: World Energy Council - Uranium resource data)</li>
<li>WHO database (Subject:: health)</li>
<li>WISE database (Subject:: soil)</li>
<li>Wildfinder database (Subject:: Distribution of species)</li>
<li>World Bank database (Subject:: Human Development)</li>
<li>WorldClim database</li>
</ul>
<h3 id="model">Model</h3>
<ul>
<li>AD RICE model (Subject:: Damage and adaptaptation costs)</li>
<li>CLUMondo model (Subject:: agriculture)</li>
<li>DICE model (Subject:: climate change)</li>
<li>DIVA model (Subject:: Consequences of sea-level rise and socio-economic development)</li>
<li>EFIGTM model (Subject:: Forestry)</li>
<li>ENV-Growth model (Subject:: Economy)</li>
<li>ENV-Linkages model (Subject:: economics and environment)</li>
<li>FAIR model (Subject:: Policy response)</li>
<li>FUND model (Subject:: climate change)</li>
<li>GCAM model (Subject:: climate change)</li>
<li>GISMO model (Subject:: Impacts on human development)</li>
<li>GLOBIO model (Subject:: Impacts on biodiversity)</li>
<li>GLOFRIS model (Subject:: Flood risk assessment)</li>
<li>GRIP model (Subject:: Roads)</li>
<li>GUAM model (Subject:: health)</li>
<li>IMAGE land management model (Subject:: Land management)</li>
<li>IMPACT model (Subject:: Agricultural economy)</li>
<li>LPJmL model (Subject:: Carbon, vegetation, agriculture and water)</li>
<li>Global Urban Air quality Model (Subject:: Global Urban Air quality)</li>
<li>MAGICC model (Subject:: climate)</li>
<li>MAGNET model (Subject:: Agricultural economy)</li>
<li>PCR-GLOBWB model (Subject:: Water balance)</li>
<li>POLES model (Subject:: energy)</li>
<li>RICE model (Subject:: Damage costs)</li>
<li>TIMER model (Subject:: Energy supply and demand)</li>
</ul>Quan PanEnvironmental science is an interdisciplinary academic field that integrates physical, biological and information sciences (including ecology, biology, physics, chemistry, plant science, zoology, mineralogy, oceanography, limnology, soil science, geology and physical geography, and atmospheric science) to the study of the environment, and the solution of environmental problems.FAIR2018-12-01T00:00:00+01:002018-12-01T23:00:00+01:00http://www.quanpan302.com/kg/FAIR<p>In 2016 <a href="https://www.nature.com/articles/sdata201618">FAIR Guiding Principles for scientific data management and stewardship’</a> were published in Scientific Data. The authors intended to provide guidelines to improve the findability, accessibility, interoperability, and reuse of digital assets.</p>
<p>The principles emphasise machine-actionability (i.e., the capacity of computational systems to find, access, interoperate, and reuse data with none or minimal human intervention) because humans increasingly rely on computational support to deal with data as a result of the increase in volume, complexity, and creation speed of data.</p>
<h2 id="principle"><a href="https://www.go-fair.org/fair-principles/">Principle</a></h2>
<p>The principles refer to three types of <strong>entities</strong>:</p>
<ul>
<li>data (or any digital object),</li>
<li>metadata (information about that digital object),</li>
<li>infrastructure</li>
</ul>
<p><strong>AIRification process</strong></p>
<p><a href="/assets/images/posts/2018-12-01-FAIR/FAIRificationProcess.png" target="_blank">
<img src="/assets/images/posts/2018-12-01-FAIR/FAIRificationProcess.png" alt="" />
</a></p>
<ol>
<li><strong>Retrieve non-FAIR data</strong>: gain access to the data to be FAIRified.</li>
<li><strong>Analyse the retrieved data</strong>:
<ul>
<li>inspect the content of the data:</li>
</ul>
<ul>
<li>Which concepts are represented?</li>
<li>What is the structure of the data?</li>
<li>What are the relations between the data elements?
- Different data distributions require different methods for identification and analysis.</li>
</ul>
</li>
<li><strong>Define the semantic model</strong>: define a ‘semantic model’ for the dataset, which describes the meaning of entities and relations in the dataset accurately, unambiguously, and in a computer-actionable way.</li>
<li><strong>Make data linkable</strong>: The non-FAIR data can be transformed into linkable data by applying the semantic model defined in step 3. Currently, this is done using Semantic Web and Linked Data technologies.</li>
<li><strong>Assign license</strong>: Although license information is part of the metadata, we have incorporated the license assignment as a separate step in the FAIRification process to highlight its importance. The absence of an explicit license may prevent others to reuse data, even if the data is intended to be open access.</li>
<li><strong>Define metadata for the dataset</strong>: As explained by many of the FAIR principles, proper and rich metadata support all aspects of FAIR. (Read the GO FAIR recommendation for metadata.)</li>
<li><strong>Deploy FAIR data resource</strong>: deploy or publish the FAIRified data, together with relevant metadata and a license, so that the metadata can be indexed by search engines and the data can be accessed, even if authentication and authorisation are required.</li>
</ol>
<h3 id="findable">Findable</h3>
<p>The first step in (re)using data is to find them. Metadata and data should be easy to find for both humans and computers. Machine-readable metadata are essential for automatic discovery of datasets and services, so this is an essential component of the <a href="https://www.go-fair.org/fair-principles/fairification-process/">FAIRification process</a>.</p>
<h4 id="f1-metadata-are-assigned-a-globally-unique-and-persistent-identifier">F1. (Meta)data are assigned a globally unique and persistent identifier</h4>
<ul>
<li>Identifiers.org provides resolvable identifiers in the form of URIs and CURIEs: <a href="http://identifiers.org">http://identifiers.org</a></li>
<li>Universally unique identifier: <a href="https://en.wikipedia.org/wiki/Universally_unique_identifier">https://en.wikipedia.org/wiki/Universally_unique_identifier</a></li>
<li>Persistent URLs: <a href="http://www.purlz.org">http://www.purlz.org</a></li>
<li>Digital Object Identifier: <a href="http://www.doi.org">http://www.doi.org</a></li>
<li>Archival Resource Key: <a href="https://escholarship.org/uc/item/9p9863nc">https://escholarship.org/uc/item/9p9863nc</a></li>
<li>Research Resource Identifiers: <a href="https://scicrunch.org/resources">https://scicrunch.org/resources</a></li>
<li>Identifiers for funding organisations (see F3 & R1): <a href="https://www.crossref.org/services/funder-registry/">https://www.crossref.org/services/funder-registry/</a></li>
<li>Identifiers for the world’s research organisations (see F3 & R1): <a href="https://www.grid.ac">https://www.grid.ac</a></li>
</ul>
<h4 id="f2-data-are-described-with-rich-metadata-defined-by-r1-below">F2. Data are described with rich metadata (defined by R1 below)</h4>
<ul>
<li>Try using the <a href="https://www.dtls.nl/fair-data/find-fair-data-tools/">DTL Metadata Editor</a></li>
<li><a href="https://theodi.org/knowledge-opinion/guides/">Marking up your dataset with DCAT</a></li>
<li><a href="https://isa-tools.org">ISA framework</a></li>
</ul>
<h4 id="f3-metadata-clearly-and-explicitly-include-the-identifier-of-the-data-they-describe">F3. Metadata clearly and explicitly include the identifier of the data they describe</h4>
<ul>
<li>The <a href="https://github.com/FAIRDataTeam/OpenRefine-metadata-extension/">FAIRifier tool</a> guarantees F3</li>
</ul>
<h4 id="f4-metadata-are-registered-or-indexed-in-a-searchable-resource">F4. (Meta)data are registered or indexed in a searchable resource</h4>
<ul>
<li><a href="https://github.com/FAIRDataTeam/FAIRDataPoint/wiki/FAIR-Data-Point-Specification">FAIR Data point specification</a></li>
</ul>
<h3 id="accessible">Accessible</h3>
<p>Once the user finds the required data, she/he needs to know how can they be accessed, possibly including authentication and authorisation.</p>
<h4 id="a1-metadata-are-retrievable-by-their-identifier-using-a-standardised-communications-protocol">A1. (Meta)data are retrievable by their identifier using a standardised communications protocol</h4>
<p><a href="/assets/images/posts/2018-12-01-FAIR/Interoperability%20and%20FAIRness%20through%20a%20novel%20combination%20of%20Web%20technologies.pdf">Interoperability and FAIRness through a novel combination of Web technologies.pdf</a></p>
<h5 id="a11-the-protocol-is-open-free-and-universally-implementable">A1.1 The protocol is open, free, and universally implementable</h5>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Skype_protocol">https://en.wikipedia.org/wiki/Skype_protocol</a></li>
<li><a href="https://www.w3.org/Protocols/">https://www.w3.org/Protocols/</a></li>
<li><a href="https://www.w3.org/Protocols/rfc959/">https://www.w3.org/Protocols/rfc959/</a></li>
</ul>
<h5 id="a12-the-protocol-allows-for-an-authentication-and-authorisation-procedure-where-necessary">A1.2 The protocol allows for an authentication and authorisation procedure, where necessary</h5>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Hash-based_message_authentication_code">https://en.wikipedia.org/wiki/Hash-based_message_authentication_code</a></li>
</ul>
<h4 id="a2-metadata-are-accessible-even-when-the-data-are-no-longer-available">A2. Metadata are accessible, even when the data are no longer available</h4>
<ul>
<li><a href="http://wiki.esipfed.org/index.php/ISO_19115_and_19115-2_CodeList_Dictionaries">ISO19115 and 19115-2 CodeList</a>, <a href="http://wiki.esipfed.org/index.php/ISO_19115-3_Codelists">ISO 19115-3</a>, <a href="/assets/images/posts/2018-12-01-FAIR/ISO-19115.pdf">Guide to implementing ISO 19115:2003(E)</a></li>
<li><a href="https://docs.geostandaarden.nl/md/vv-st-mdprofiel-iso19119-20200602/">Nederlands metadata profiel op ISO 19119 voor services versie 2.1.0</a></li>
<li><strong>…</strong></li>
</ul>
<h3 id="interoperable">Interoperable</h3>
<p>The data usually need to be integrated with other data. In addition, the data need to interoperate with applications or workflows for analysis, storage, and processing.</p>
<h4 id="i1-metadata-use-a-formal-accessible-shared-and-broadly-applicable-language-for-knowledge-representation">I1. (Meta)data use a formal, accessible, shared, and broadly applicable language for knowledge representation.</h4>
<ul>
<li>The RDF extensible knowledge representation model is a way to describe and structure datasets. You can refer to the Dublin - Core Schema as an example.</li>
<li>OWL</li>
<li>DAML+OIL</li>
<li>JSON LD</li>
<li>See example data models for <a href="http://nanopub.org/wordpress/?page_id=57">Predicted gene-disease associations from text mining</a> and <a href="http://nanopub.org/wordpress/?page_id=679">Tissue gene expression</a>.</li>
<li>See data models from EBI in the ‘documentation’ links on this page <a href="http://www.ebi.ac.uk/rdf/">http://www.ebi.ac.uk/rdf/</a></li>
</ul>
<h4 id="i2-metadata-use-vocabularies-that-follow-fair-principles">I2. (Meta)data use vocabularies that follow FAIR principles</h4>
<ul>
<li><a href="https://github.com/FAIRDataTeam/FAIRDataPoint/wiki/FAIR-Data-Point-Specification">FAIR Data Point specification</a></li>
</ul>
<h4 id="i3-metadata-include-qualified-references-to-other-metadata">I3. (Meta)data include qualified references to other (meta)data</h4>
<ul>
<li><a href="https://github.com/FAIRDataTeam/FAIRDataPoint/wiki">FAIR Data Point</a></li>
<li><a href="/assets/images/posts/2018-12-01-FAIR//C8V1L6.rdf">C8V1L6.rdf</a></li>
</ul>
<h3 id="reusable">Reusable</h3>
<p>The ultimate goal of FAIR is to optimise the reuse of data. To achieve this, metadata and data should be well-described so that they can be replicated and/or combined in different settings.</p>
<h4 id="r1-metadata-are-richly-described-with-a-plurality-of-accurate-and-relevant-attributes">R1. Meta(data) are richly described with a plurality of accurate and relevant attributes</h4>
<ul>
<li>Describe the scope of your data: for what purpose was it generated/collected?</li>
<li>Mention any particularities or limitations about the data that other users should be aware of.</li>
<li>Specify the date of generation/collection of the data, the lab conditions, who prepared the data, the parameter settings, the name and version of the software used.</li>
<li>Is it raw or processed data?</li>
<li>Ensure that all variable names are explained or self-explanatory (i.e., defined in the research field’s controlled vocabulary).</li>
<li>Clearly specify and document the version of the archived and/or reused data.</li>
</ul>
<h5 id="r11-metadata-are-released-with-a-clear-and-accessible-data-usage-license">R1.1. (Meta)data are released with a clear and accessible data usage license</h5>
<ul>
<li><a href="https://wiki.creativecommons.org/wiki/License_RDF">https://wiki.creativecommons.org/wiki/License_RDF</a></li>
</ul>
<h5 id="r12-metadata-are-associated-with-detailed-provenance">R1.2. (Meta)data are associated with detailed provenance</h5>
<ul>
<li><a href="https://creativecommons.org/licenses/by-sa/2.0/">https://creativecommons.org/licenses/by-sa/2.0/</a></li>
</ul>
<h5 id="r13-metadata-meet-domain-relevant-community-standards">R1.3. (Meta)data meet domain-relevant community standards</h5>
<p>It is easier to reuse data sets if they are similar: same type of data, data organised in a standardised way, well-established and sustainable file formats, documentation (metadata) following a common template and using common vocabulary.</p>
<ul>
<li><a href="http://schema.datacite.org/">DataCite Metadata Schema (for general purpose, not domain-specific)</a></li>
<li><a href="http://dublincore.org/specifications/">Dublin Core Metadata Initiative (for general purpose, not domain-specific)</a></li>
<li><a href="https://www.ncbi.nlm.nih.gov/geo/info/MIAME.html">microarrays</a></li>
<li><a href="http://cds.u-strasbg.fr/doc/catstd.htx">astrophysics</a></li>
<li><a href="https://www.iso.org/standard/53798.html">geographic information and services</a></li>
<li><a href="http://cfconventions.org/">climate and forecast</a></li>
<li><a href="http://www.iucr.org/resources/cif">crystallographic information</a></li>
<li><a href="http://www.nexusformat.org/">neutron, x-ray, and muon experiment data</a></li>
<li><a href="http://www.ddialliance.org/Specification">social, behavioral, and economic sciences</a></li>
<li><a href="https://sdmx.org/">statistical data</a></li>
<li><a href="https://knb.ecoinformatics.org/#tools/eml">ecology</a></li>
</ul>
<h2 id="implementation"><a href="https://www.go-fair.org/implementation-networks/">Implementation</a></h2>
<p>A GO FAIR Implementation Network (IN) is a consortium committed to defining and creating specific materials and tools as elements of the Internet of <a href="https://www.go-fair.org/resources/internet-fair-data-services/">FAIR Data and Services (IFDS)</a>.</p>
<p>The INs commit to implementing elements of the Internet of FAIR Data and Services within the three pillars: <strong>GO Build</strong> (Technology), <strong>GO Change</strong> (Culture) and <strong>GO Train</strong> (Training).</p>
<ul>
<li><strong>IMPLEMENT</strong>, clearly defined plans and deliverables to implement an element of the Internet of FAIR Data and Services (IFDS) within a defined time period.</li>
<li><strong>FOSTER</strong>, a community of harmonized FAIR practices.</li>
<li><strong>COMMUNICATE</strong>, together on critical issues on which consensus has been reached and which are of generic importance for the community.</li>
</ul>
<h2 id="how-to-join">How to join</h2>
<p><a href="/assets/images/posts/2018-12-01-FAIR/HowToJoinIN.png" target="_blank">
<img src="/assets/images/posts/2018-12-01-FAIR/HowToJoinIN.png" alt="" />
</a></p>
<h3 id="rules-of-engagement"><a href="https://www.go-fair.org/resources/rules-of-engagement/">Rules of Engagement</a></h3>
<ul>
<li><strong>Answer to the FAIR Data Principles</strong>: The GO FAIR implementation plan for the Internet of FAIR Data and Services (IFDS) as a whole will answer to the FAIR Guiding Principles. This means that data resources, services, and training materials will be developed according to these principles and will be adorned with rich, machine-readable metadata, and that they will thus be Findable, Accessible, Interoperable, and Reusable under well-defined conditions, by machines and humans.</li>
<li><strong>Abide by the Governance Principles</strong>: A GO FAIR partner should formally acknowledge and endorse the general Governance principles of the GO FAIR initiative.</li>
<li><strong>Accept to be stakeholder-governed</strong>: The GO FAIR implementation approach for the IFDS is stakeholder-governed. A self-coordinating, board-governed organisation drawn from the stakeholder Implementation Network community creates trust that the organisation will take decisions driven by community consensus, considering different interests.</li>
<li><strong>Accept non-discriminatory membership</strong>: When willing to sign the Rules of Engagement, any stakeholder may express an interest in and should be welcome to join GO FAIR.</li>
<li><strong>Conduct transparent operations</strong>: Achieving trust in the selection of representatives in governance groups will be best achieved through transparent processes and operations in general (within the constraints of privacy laws).</li>
<li><strong>Not abuse its trusted provider or GO FAIR status</strong> for undue lobbying for its own services, especially with the aim to monopolise critical components of the IFDS.</li>
</ul>Quan PanIn 2016 FAIR Guiding Principles for scientific data management and stewardship’ were published in Scientific Data. The authors intended to provide guidelines to improve the findability, accessibility, interoperability, and reuse of digital assets.V8 Engine2018-12-01T00:00:00+01:002018-12-01T14:00:00+01:00http://www.quanpan302.com/sd/V8engine<p><strong>V8 Javascript engine</strong> (<a href="https://github.com/v8/v8" target="_blank">Github</a>), is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++. It is used in Chrome and in Node.js, among others. It implements ECMAScript and WebAssembly, and runs on Windows 7 or later, macOS 10.12+, and Linux systems that use x64, IA-32, ARM, or MIPS processors. V8 can run standalone, or can be embedded into any C++ application.</p>
<h3 id="advanced-guide">Advanced guide</h3>
<p>The V8 API provides functions for compiling and executing scripts, accessing C++ methods and data structures, handling errors, and enabling security checks. Your application can use V8 just like any other C++ library. Your C++ code accesses V8 through the V8 API by including the header <code class="language-plaintext highlighter-rouge">include/v8.h</code>.</p>
<h4 id="handles-and-garbage-collection"><a href="https://v8.dev/docs/embed#handles-and-garbage-collection" target="_blank">Handles and garbage collection</a></h4>
<p><a href="/assets/images/posts/2018-12-01-V8engine/V8-local-persist-handles-review.png" target="_blank">
<img src="/assets/images/posts/2018-12-01-V8engine/V8-local-persist-handles-review.png" alt="" />
</a></p>
<h4 id="contexts"><a href="https://v8.dev/docs/embed#contexts" target="_blank">Contexts</a></h4>
<p><a href="/assets/images/posts/2018-12-01-V8engine/V8-intro-contexts.png" target="_blank">
<img src="/assets/images/posts/2018-12-01-V8engine/V8-intro-contexts.png" alt="" />
</a></p>
<h4 id="templates"><a href="https://v8.dev/docs/embed#templates" target="_blank">Templates</a></h4>
<p>A template is a blueprint for JavaScript functions and objects in a context. You can use a template to wrap C++ functions and data structures within JavaScript objects so that they can be manipulated by JavaScript scripts.</p>
<h4 id="accessors"><a href="https://v8.dev/docs/embed#accessors" target="_blank">Accessors</a></h4>
<h4 id="accessing-dynamic-variables"><a href="https://v8.dev/docs/embed#accessing-dynamic-variables" target="_blank">Accessing dynamic variables</a></h4>
<h4 id="interceptors"><a href="https://v8.dev/docs/embed#interceptors" target="_blank">Interceptors</a></h4>
<h4 id="security-model"><a href="https://v8.dev/docs/embed#security-model" target="_blank">Security model</a></h4>
<h4 id="exceptions"><a href="https://v8.dev/docs/embed#exceptions" target="_blank">Exceptions</a></h4>
<h4 id="inheritance"><a href="https://v8.dev/docs/embed#inheritance" target="_blank">Inheritance</a></h4>
<h3 id="guide-to-embedding-v8">Guide to embedding V8</h3>
<p><em>This document is intended for C++ programmers who want to embed the V8 JavaScript engine within a C++ application. It helps you to make your own application’s C++ objects and methods available to JavaScript, and to make JavaScript objects and functions available to your C++ application.</em></p>
<p>Follow the steps below to run the example yourself:</p>
<ol>
<li>Download the V8 source code by following the Git instructions.</li>
<li>The instructions for this hello world example have last been tested with V8 v7.1.11. You can check out this branch with git checkout refs/tags/7.1.11 -b sample -t</li>
<li>Create a build configuration using the helper script:
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>tools/dev/v8gen.py x64.release.sample
</code></pre></div> </div>
<p>You can inspect and manually edit the build configuration by running:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gn args out.gn/x64.release.sample
</code></pre></div> </div>
</li>
<li>Build the static library on a Linux 64 system:
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ninja <span class="nt">-C</span> out.gn/x64.release.sample v8_monolith
</code></pre></div> </div>
</li>
<li>Compile hello-world.cc, linking to the static library created in the build process. For example, on 64bit Linux using the GNU compiler:
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>g++ <span class="nt">-I</span><span class="nb">.</span> <span class="nt">-Iinclude</span> samples/hello-world.cc <span class="nt">-o</span> hello_world <span class="nt">-lv8_monolith</span> <span class="nt">-Lout</span>.gn/x64.release.sample/obj/ <span class="nt">-pthread</span> <span class="nt">-std</span><span class="o">=</span>c++0x <span class="nt">-DV8_COMPRESS_POINTERS</span>
</code></pre></div> </div>
</li>
<li>For more complex code, V8 fails without an ICU data file. Copy this file to where your binary is stored:
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cp </span>out.gn/x64.release.sample/icudtl.dat <span class="nb">.</span>
</code></pre></div> </div>
</li>
<li>Run the hello_world executable file at the command line. e.g. On Linux, in the V8 directory, run:
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./hello_world
</code></pre></div> </div>
</li>
<li>It prints Hello, World!. Yay!</li>
</ol>
<p>If you are looking for an example which is in sync with master, check out the file <a href="https://chromium.googlesource.com/v8/v8/+/master/samples/hello-world.cc" target="_blank">hello-world.cc</a>. This is a very simple example and you’ll likely want to do more than just execute scripts as strings.</p>Quan PanV8 Javascript engine (Github), is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++. It is used in Chrome and in Node.js, among others. It implements ECMAScript and WebAssembly, and runs on Windows 7 or later, macOS 10.12+, and Linux systems that use x64, IA-32, ARM, or MIPS processors. V8 can run standalone, or can be embedded into any C++ application.Typescript.js2018-03-05T00:00:00+01:002018-03-05T14:00:00+01:00http://www.quanpan302.com/sd/Typescript<p><strong><a href="https://www.typescriptlang.org/" target="_blank">Typescript.js</a></strong> is a super-set of JavaScript, it doesn’t have a default template - there would be too many. Instead, other projects have their own TypeScript bootstrap templates with their own context. These projects provide templates which include TypeScript support.</p>
<p>TOC</p>
<ul>
<li><a href="#basic">Basic</a>
<ul>
<li><a href="#typestarget_blank">Types{:target=”_blank”}</a></li>
<li><a href="#interfacestarget_blank">Interfaces{:target=”_blank”}</a></li>
<li><a href="#functionstarget_blank">Functions{:target=”_blank”}</a></li>
<li><a href="#literal-typestarget_blank">Literal Types{:target=”_blank”}</a></li>
<li><a href="#unions-and-intersection-typestarget_blank">Unions and Intersection Types{:target=”_blank”}</a></li>
<li><a href="#classestarget_blank">Classes{:target=”_blank”}</a></li>
<li><a href="#enumstarget_blank">Enums{:target=”_blank”}</a></li>
<li><a href="#genericstarget_blank">Generics{:target=”_blank”}</a></li>
</ul>
</li>
<li><a href="#identifiers">Identifiers</a></li>
<li><a href="#keywords">Keywords</a></li>
<li><a href="#handbook">Handbook</a>
<ul>
<li><a href="#reactjstarget_blank">React.js{:target=”_blank”}</a></li>
</ul>
</li>
<li><a href="#resources">Resources</a></li>
</ul>
<p><a href="/assets/images/posts/2018-03-05-Typescript/typescript-handbook-beta.pdf" target="_blank">handbook.pdf</a></p>
<h2 id="basic">Basic</h2>
<p><strong>object</strong> is a type that represents the non-primitive type, i.e. anything that is not <code class="language-plaintext highlighter-rouge">number</code>, <code class="language-plaintext highlighter-rouge">string</code>, <code class="language-plaintext highlighter-rouge">boolean</code>, <code class="language-plaintext highlighter-rouge">symbol</code>, <code class="language-plaintext highlighter-rouge">null</code>, or <code class="language-plaintext highlighter-rouge">undefined</code>.</p>
<h3 id="types"><a href="https://www.staging-typescript.org/docs/handbook/basic-types.html" target="_blank">Types</a></h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Boolean</span>
<span class="kd">let</span> <span class="nx">isDone</span><span class="p">:</span> <span class="nx">boolean</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="c1">// Number</span>
<span class="kd">let</span> <span class="nx">decimal</span><span class="p">:</span> <span class="nx">number</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">hex</span><span class="p">:</span> <span class="nx">number</span> <span class="o">=</span> <span class="mh">0xf00d</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">binary</span><span class="p">:</span> <span class="nx">number</span> <span class="o">=</span> <span class="mb">0b1010</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">octal</span><span class="p">:</span> <span class="nx">number</span> <span class="o">=</span> <span class="mo">0o744</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">big</span><span class="p">:</span> <span class="nx">bigint</span> <span class="o">=</span> <span class="mi">100</span><span class="nx">n</span><span class="p">;</span>
<span class="c1">// String</span>
<span class="kd">let</span> <span class="nx">fullName</span><span class="p">:</span> <span class="nx">string</span> <span class="o">=</span> <span class="s2">`Bob Bobbington`</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">age</span><span class="p">:</span> <span class="nx">number</span> <span class="o">=</span> <span class="mi">37</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">sentence</span><span class="p">:</span> <span class="nx">string</span> <span class="o">=</span> <span class="s2">`Hello, my name is </span><span class="p">${</span><span class="nx">fullName</span><span class="p">}</span><span class="s2">. I'll be </span><span class="p">${</span><span class="nx">age</span> <span class="o">+</span> <span class="mi">1</span><span class="p">}</span><span class="s2"> years old next month.`</span><span class="p">;</span>
<span class="c1">// Array</span>
<span class="kd">let</span> <span class="nx">list</span><span class="p">:</span> <span class="nx">number</span><span class="p">[]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">];</span>
<span class="kd">let</span> <span class="nx">list</span><span class="p">:</span> <span class="nb">Array</span><span class="o"><</span><span class="nx">number</span><span class="o">></span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">];</span>
<span class="c1">// Tuple</span>
<span class="kd">let</span> <span class="nx">x</span><span class="p">:</span> <span class="p">[</span><span class="nx">string</span><span class="p">,</span> <span class="nx">number</span><span class="p">];</span> <span class="c1">// Declare a tuple type</span>
<span class="c1">// Initialize it</span>
<span class="nx">x</span> <span class="o">=</span> <span class="p">[</span><span class="dl">"</span><span class="s2">hello</span><span class="dl">"</span><span class="p">,</span> <span class="mi">10</span><span class="p">];</span> <span class="c1">// OK</span>
<span class="c1">// Enum</span>
<span class="kr">enum</span> <span class="nx">Color</span> <span class="p">{</span>
<span class="nx">Red</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
<span class="nx">Green</span><span class="p">,</span>
<span class="nx">Blue</span><span class="p">,</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">colorName</span><span class="p">:</span> <span class="nx">string</span> <span class="o">=</span> <span class="nx">Color</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">colorName</span><span class="p">);</span> <span class="c1">// Displays 'Green'</span>
<span class="c1">// Unknown</span>
<span class="kd">let</span> <span class="nx">notSure</span><span class="p">:</span> <span class="nx">unknown</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<span class="c1">// Any</span>
<span class="nx">declare</span> <span class="kd">function</span> <span class="nx">getValue</span><span class="p">(</span><span class="nx">key</span><span class="p">:</span> <span class="nx">string</span><span class="p">):</span> <span class="nx">any</span><span class="p">;</span>
<span class="c1">// OK, return value of 'getValue' is not checked</span>
<span class="kd">const</span> <span class="nx">str</span><span class="p">:</span> <span class="nx">string</span> <span class="o">=</span> <span class="nx">getValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">myString</span><span class="dl">"</span><span class="p">);</span>
<span class="c1">// Void</span>
<span class="kd">function</span> <span class="nx">warnUser</span><span class="p">():</span> <span class="k">void</span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">"</span><span class="s2">This is my warning message</span><span class="dl">"</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// Null and Undefined</span>
<span class="c1">// Not much else we can assign to these variables!</span>
<span class="kd">let</span> <span class="nx">u</span><span class="p">:</span> <span class="kc">undefined</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span>
<span class="kd">let</span> <span class="nx">n</span><span class="p">:</span> <span class="kc">null</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
</code></pre></div></div>
<h3 id="interfaces"><a href="https://www.staging-typescript.org/docs/handbook/interfaces.html" target="_blank">Interfaces</a></h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">user</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">name</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Hayes</span><span class="dl">"</span><span class="p">,</span>
<span class="na">id</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="p">};</span>
</code></pre></div></div>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">user</span><span class="p">:</span> <span class="nx">User</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">name</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Hayes</span><span class="dl">"</span><span class="p">,</span>
<span class="na">id</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="p">};</span>
</code></pre></div></div>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kr">interface</span> <span class="nx">User</span> <span class="p">{</span>
<span class="nl">name</span><span class="p">:</span> <span class="nx">string</span><span class="p">;</span>
<span class="nl">id</span><span class="p">:</span> <span class="nx">number</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">class</span> <span class="nx">UserAccount</span> <span class="p">{</span>
<span class="nl">name</span><span class="p">:</span> <span class="nx">string</span><span class="p">;</span>
<span class="nl">id</span><span class="p">:</span> <span class="nx">number</span><span class="p">;</span>
<span class="kd">constructor</span><span class="p">(</span><span class="nx">name</span><span class="p">:</span> <span class="nx">string</span><span class="p">,</span> <span class="nx">id</span><span class="p">:</span> <span class="nx">number</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">name</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">id</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">user</span><span class="p">:</span> <span class="nx">User</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">UserAccount</span><span class="p">(</span><span class="dl">"</span><span class="s2">Murphy</span><span class="dl">"</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
</code></pre></div></div>
<h3 id="functions"><a href="https://www.staging-typescript.org/docs/handbook/functions.html" target="_blank">Functions</a></h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Typing the function</span>
<span class="kd">function</span> <span class="nx">add</span><span class="p">(</span><span class="nx">x</span><span class="p">:</span> <span class="nx">number</span><span class="p">,</span> <span class="nx">y</span><span class="p">:</span> <span class="nx">number</span><span class="p">):</span> <span class="nx">number</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">x</span> <span class="o">+</span> <span class="nx">y</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">myAdd</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">x</span><span class="p">:</span> <span class="nx">number</span><span class="p">,</span> <span class="nx">y</span><span class="p">:</span> <span class="nx">number</span><span class="p">):</span> <span class="nx">number</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">x</span> <span class="o">+</span> <span class="nx">y</span><span class="p">;</span>
<span class="p">};</span>
<span class="c1">// Writing the function type</span>
<span class="kd">let</span> <span class="nx">myAdd</span><span class="p">:</span> <span class="p">(</span><span class="nx">x</span><span class="p">:</span> <span class="nx">number</span><span class="p">,</span> <span class="nx">y</span><span class="p">:</span> <span class="nx">number</span><span class="p">)</span> <span class="o">=></span> <span class="nx">number</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span>
<span class="nx">x</span><span class="p">:</span> <span class="nx">number</span><span class="p">,</span>
<span class="nx">y</span><span class="p">:</span> <span class="nx">number</span>
<span class="p">):</span> <span class="nx">number</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">x</span> <span class="o">+</span> <span class="nx">y</span><span class="p">;</span>
<span class="p">};</span>
</code></pre></div></div>
<h3 id="literal-types"><a href="https://www.staging-typescript.org/docs/handbook/literal-types.html" target="_blank">Literal Types</a></h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// String Literal Types</span>
<span class="nx">type</span> <span class="nx">Easing</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">ease-in</span><span class="dl">"</span> <span class="o">|</span> <span class="dl">"</span><span class="s2">ease-out</span><span class="dl">"</span> <span class="o">|</span> <span class="dl">"</span><span class="s2">ease-in-out</span><span class="dl">"</span><span class="p">;</span>
<span class="kd">class</span> <span class="nx">UIElement</span> <span class="p">{</span>
<span class="nx">animate</span><span class="p">(</span><span class="nx">dx</span><span class="p">:</span> <span class="nx">number</span><span class="p">,</span> <span class="nx">dy</span><span class="p">:</span> <span class="nx">number</span><span class="p">,</span> <span class="nx">easing</span><span class="p">:</span> <span class="nx">Easing</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">easing</span> <span class="o">===</span> <span class="dl">"</span><span class="s2">ease-in</span><span class="dl">"</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// ...</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">easing</span> <span class="o">===</span> <span class="dl">"</span><span class="s2">ease-out</span><span class="dl">"</span><span class="p">)</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">easing</span> <span class="o">===</span> <span class="dl">"</span><span class="s2">ease-in-out</span><span class="dl">"</span><span class="p">)</span> <span class="p">{</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// It's possible that someone could reach this</span>
<span class="c1">// by ignoring your types though.</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">button</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">UIElement</span><span class="p">();</span>
<span class="nx">button</span><span class="p">.</span><span class="nx">animate</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="dl">"</span><span class="s2">ease-in</span><span class="dl">"</span><span class="p">);</span>
<span class="c1">// Numeric Literal Types</span>
<span class="kd">function</span> <span class="nx">rollDice</span><span class="p">():</span> <span class="mi">1</span> <span class="o">|</span> <span class="mi">2</span> <span class="o">|</span> <span class="mi">3</span> <span class="o">|</span> <span class="mi">4</span> <span class="o">|</span> <span class="mi">5</span> <span class="o">|</span> <span class="mi">6</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">*</span> <span class="mi">6</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">as</span> <span class="mi">1</span> <span class="o">|</span> <span class="mi">2</span> <span class="o">|</span> <span class="mi">3</span> <span class="o">|</span> <span class="mi">4</span> <span class="o">|</span> <span class="mi">5</span> <span class="o">|</span> <span class="mi">6</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">rollDice</span><span class="p">();</span>
</code></pre></div></div>
<h3 id="unions-and-intersection-types"><a href="https://www.staging-typescript.org/docs/handbook/unions-and-intersections.html" target="_blank">Unions and Intersection Types</a></h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">padLeft</span><span class="p">(</span><span class="nx">value</span><span class="p">:</span> <span class="nx">string</span><span class="p">,</span> <span class="nx">padding</span><span class="p">:</span> <span class="nx">string</span> <span class="o">|</span> <span class="nx">number</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// ...</span>
<span class="p">}</span>
</code></pre></div></div>
<h3 id="classes"><a href="https://www.staging-typescript.org/docs/handbook/classes.html" target="_blank">Classes</a></h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">class</span> <span class="nx">Animal</span> <span class="p">{</span>
<span class="nl">name</span><span class="p">:</span> <span class="nx">string</span><span class="p">;</span>
<span class="kd">constructor</span><span class="p">(</span><span class="nx">theName</span><span class="p">:</span> <span class="nx">string</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">theName</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">move</span><span class="p">(</span><span class="nx">distanceInMeters</span><span class="p">:</span> <span class="nx">number</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">`</span><span class="p">${</span><span class="k">this</span><span class="p">.</span><span class="nx">name</span><span class="p">}</span><span class="s2"> moved </span><span class="p">${</span><span class="nx">distanceInMeters</span><span class="p">}</span><span class="s2">m.`</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">class</span> <span class="nx">Snake</span> <span class="kd">extends</span> <span class="nx">Animal</span> <span class="p">{</span>
<span class="kd">constructor</span><span class="p">(</span><span class="nx">name</span><span class="p">:</span> <span class="nx">string</span><span class="p">)</span> <span class="p">{</span>
<span class="k">super</span><span class="p">(</span><span class="nx">name</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">move</span><span class="p">(</span><span class="nx">distanceInMeters</span> <span class="o">=</span> <span class="mi">5</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">"</span><span class="s2">Slithering...</span><span class="dl">"</span><span class="p">);</span>
<span class="k">super</span><span class="p">.</span><span class="nx">move</span><span class="p">(</span><span class="nx">distanceInMeters</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">class</span> <span class="nx">Horse</span> <span class="kd">extends</span> <span class="nx">Animal</span> <span class="p">{</span>
<span class="kd">constructor</span><span class="p">(</span><span class="nx">name</span><span class="p">:</span> <span class="nx">string</span><span class="p">)</span> <span class="p">{</span>
<span class="k">super</span><span class="p">(</span><span class="nx">name</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">move</span><span class="p">(</span><span class="nx">distanceInMeters</span> <span class="o">=</span> <span class="mi">45</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="dl">"</span><span class="s2">Galloping...</span><span class="dl">"</span><span class="p">);</span>
<span class="k">super</span><span class="p">.</span><span class="nx">move</span><span class="p">(</span><span class="nx">distanceInMeters</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">sam</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Snake</span><span class="p">(</span><span class="dl">"</span><span class="s2">Sammy the Python</span><span class="dl">"</span><span class="p">);</span>
<span class="kd">let</span> <span class="nx">tom</span><span class="p">:</span> <span class="nx">Animal</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Horse</span><span class="p">(</span><span class="dl">"</span><span class="s2">Tommy the Palomino</span><span class="dl">"</span><span class="p">);</span>
<span class="nx">sam</span><span class="p">.</span><span class="nx">move</span><span class="p">();</span>
<span class="nx">tom</span><span class="p">.</span><span class="nx">move</span><span class="p">(</span><span class="mi">34</span><span class="p">);</span>
</code></pre></div></div>
<h3 id="enums"><a href="https://www.staging-typescript.org/docs/handbook/enums.html" target="_blank">Enums</a></h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kr">enum</span> <span class="nx">Response</span> <span class="p">{</span>
<span class="nx">No</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<span class="nx">Yes</span> <span class="o">=</span> <span class="mi">1</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nx">respond</span><span class="p">(</span><span class="nx">recipient</span><span class="p">:</span> <span class="nx">string</span><span class="p">,</span> <span class="nx">message</span><span class="p">:</span> <span class="nx">Response</span><span class="p">):</span> <span class="k">void</span> <span class="p">{</span>
<span class="c1">// ...</span>
<span class="p">}</span>
<span class="nx">respond</span><span class="p">(</span><span class="dl">"</span><span class="s2">Princess Caroline</span><span class="dl">"</span><span class="p">,</span> <span class="nx">Response</span><span class="p">.</span><span class="nx">Yes</span><span class="p">);</span>
</code></pre></div></div>
<h3 id="generics"><a href="https://www.staging-typescript.org/docs/handbook/generics.html" target="_blank">Generics</a></h3>
<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Generic Types</span>
<span class="kd">function</span> <span class="nx">identity</span><span class="o"><</span><span class="nx">T</span><span class="o">></span><span class="p">(</span><span class="nx">arg</span><span class="p">:</span> <span class="nx">T</span><span class="p">):</span> <span class="nx">T</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">arg</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">output</span> <span class="o">=</span> <span class="nx">identity</span><span class="o"><</span><span class="nx">string</span><span class="o">></span><span class="p">(</span><span class="dl">"</span><span class="s2">myString</span><span class="dl">"</span><span class="p">);</span> <span class="c1">// type of output will be 'string'</span>
<span class="kd">let</span> <span class="nx">output</span> <span class="o">=</span> <span class="nx">identity</span><span class="p">(</span><span class="dl">"</span><span class="s2">myString</span><span class="dl">"</span><span class="p">);</span> <span class="c1">// type of output will be 'string'</span>
<span class="c1">// Generic Classes</span>
<span class="kd">class</span> <span class="nx">GenericNumber</span><span class="o"><</span><span class="nx">T</span><span class="o">></span> <span class="p">{</span>
<span class="na">zeroValue</span><span class="p">:</span> <span class="nx">T</span><span class="p">;</span>
<span class="nl">add</span><span class="p">:</span> <span class="p">(</span><span class="na">x</span><span class="p">:</span> <span class="nx">T</span><span class="p">,</span> <span class="na">y</span><span class="p">:</span> <span class="nx">T</span><span class="p">)</span> <span class="o">=></span> <span class="nx">T</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">myGenericNumber</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">GenericNumber</span><span class="o"><</span><span class="nx">number</span><span class="o">></span><span class="p">();</span>
<span class="nx">myGenericNumber</span><span class="p">.</span><span class="nx">zeroValue</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nx">myGenericNumber</span><span class="p">.</span><span class="nx">add</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">x</span> <span class="o">+</span> <span class="nx">y</span><span class="p">;</span>
<span class="p">};</span>
</code></pre></div></div>
<h2 id="identifiers">Identifiers</h2>
<p>Valid</p>
<ul>
<li>empName</li>
<li>emp_name</li>
<li>_empName</li>
<li>result1</li>
<li>$result</li>
</ul>
<h2 id="keywords">Keywords</h2>
<table>
<thead>
<tr>
<th>keywords</th>
<th>keywords</th>
<th>keywords</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Reserved words</strong></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>break</td>
<td>case</td>
<td>catch</td>
</tr>
<tr>
<td>class</td>
<td>const</td>
<td>continue</td>
</tr>
<tr>
<td>debugger</td>
<td>default</td>
<td>delete</td>
</tr>
<tr>
<td>do</td>
<td>else</td>
<td>enum</td>
</tr>
<tr>
<td>export</td>
<td>extends</td>
<td>false</td>
</tr>
<tr>
<td>finally</td>
<td>for</td>
<td>function</td>
</tr>
<tr>
<td>If</td>
<td>import</td>
<td>in</td>
</tr>
<tr>
<td>istanceOf</td>
<td>new</td>
<td>null</td>
</tr>
<tr>
<td>return</td>
<td>super</td>
<td>switch</td>
</tr>
<tr>
<td>this</td>
<td>throw</td>
<td>true</td>
</tr>
<tr>
<td>try</td>
<td>typeOf</td>
<td>var</td>
</tr>
<tr>
<td>void</td>
<td>while</td>
<td>with</td>
</tr>
<tr>
<td><strong>Strict Mode Reserved Words</strong></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>as</td>
<td>implements</td>
<td>interface</td>
</tr>
<tr>
<td>let</td>
<td>package</td>
<td>private</td>
</tr>
<tr>
<td>protected</td>
<td>public</td>
<td>static</td>
</tr>
<tr>
<td>yield</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>** Contextual keywords**</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>any</td>
<td>boolean</td>
<td>constructor</td>
</tr>
<tr>
<td>declare</td>
<td>get</td>
<td>module</td>
</tr>
<tr>
<td>require</td>
<td>number</td>
<td>set</td>
</tr>
<tr>
<td>string</td>
<td>symbol</td>
<td>type</td>
</tr>
<tr>
<td>from</td>
<td>of</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="handbook">Handbook</h2>
<h3 id="reactjs"><a href="https://www.staging-typescript.org/docs/handbook/react.html" target="_blank">React.js</a></h3>
<p>Install create-react-app</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>node <span class="nt">-v</span>
<span class="nb">ls</span> /usr/local/lib/node_modules/
<span class="nb">sudo </span>npm <span class="nb">install</span> <span class="nt">-g</span> create-react-app
</code></pre></div></div>
<p>Create our new project, Project layout:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>create-react-app react-with-ts <span class="nt">--template</span><span class="o">=</span>typescript
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>react-with-ts/
├─ .gitignore
├─ node_modules/
├─ public/
├─ src/
│ └─ ...
├─ package.json
├─ tsconfig.json
└─ tslint.json
</code></pre></div></div>
<h2 id="resources">Resources</h2>
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" width="640" height="360" src="https://www.youtube.com/embed/ahCwqrYpIuM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
</div>Quan PanTypescript.js is a super-set of JavaScript, it doesn’t have a default template - there would be too many. Instead, other projects have their own TypeScript bootstrap templates with their own context. These projects provide templates which include TypeScript support.HTML2018-03-01T00:00:00+01:002018-03-01T14:00:00+01:00http://www.quanpan302.com/sd/HTML<p><strong><a href="https://en.wikipedia.org/wiki/HTML" target="_blank">HTML</a></strong> is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScript.</p>
<p>TOC</p>
<ul>
<li><a href="#html5">HTML5</a></li>
<li><a href="#resources">Resources</a></li>
</ul>
<h2 id="html5">HTML5</h2>
<p><a href="https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5" target="_blank" class="badge badge-secondary">
<span class="icon icon--external-link"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="external-link-square-alt" class="svg-inline--fa fa-external-link-square-alt fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z"></path></svg></span>
</a></p>
<p><a href="/assets/images/posts/2018-03-01-HTML/html-chatsheet.pdf">Cheat Sheet</a></p>
<h2 id="resources">Resources</h2>Quan PanHTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScript.PDAL2018-01-06T00:00:00+01:002018-01-06T14:00:00+01:00http://www.quanpan302.com/sd/PDAL<p><strong><a href="https://pdal.io/" target="_blank">PDAL</a></strong> (<a href="https://github.com/PDAL/PDAL" target="_blank">Github</a>)is a C++ BSD library for translating and manipulating <a href="https://en.wikipedia.org/wiki/Point_cloud" target="_blank">point cloud data</a>. It is very much like the GDAL library which handles raster and vector data. The About page provides high level overview of the library and its philosophy. Visit Readers and Writers to list data formats it supports, and see Filters for filtering operations that you can apply with PDAL.</p>
<p><a href="/assets/images/posts/2018-01-06-PDAL/PDAL.pdf" target="_blank">PDAL.pdf</a></p>
<p><a href="/assets/images/posts/2018-01-06-PDAL/PDAL-Architecture_Pipeline.png" target="_blank">
<img src="/assets/images/posts/2018-01-06-PDAL/PDAL-Architecture_Pipeline.png" alt="" />
</a></p>
<p><strong><a href="https://pointclouds.org/" target="_blank">PCL</a></strong> (<a href="https://github.com/PointCloudLibrary/pcl" target="_blank">Github</a>) s a large scale, open project for point cloud processing. The PCL framework contains numerous state-of-the art algorithms including filtering, feature estimation, surface reconstruction, registration, model fitting and segmentation. These algorithms can be used, for example, to filter outliers from noisy data, stitch 3D point clouds together, segment relevant parts of a scene, extract keypoints and compute descriptors to recognize objects in the world based on their geometric appearance, and create surfaces from point clouds and visualize them – to name a few.</p>
<p><a href="/assets/images/posts/2018-01-06-PDAL/PCL-icra2011.pdf" target="_blank">PCLL.pdf</a></p>
<h2 id="pdal">PDAL</h2>
<h2 id="pcl">PCL</h2>
<p><a href="https://pcl.readthedocs.io/projects/tutorials/en/latest/#" target="_blank">Documentation</a></p>
<p>Basic functions for CUDA streams management:</p>
<ul>
<li>NPPST Core</li>
<li>NPPST Image Processing</li>
<li>NPPST Signal Processing</li>
</ul>
<p>Modules:</p>
<ul>
<li>Module common</li>
<li>Module features</li>
<li>Module filters</li>
<li>Module geometry</li>
<li>Module io</li>
<li>Module kdtree</li>
<li>Module keypoints</li>
<li>Module octree</li>
<li>Module outofcore</li>
<li>Module recognition</li>
<li>Module registration</li>
<li>Module sample_consensus</li>
<li>Module search</li>
<li>Module segmentation</li>
<li>Module surface</li>
<li>Module visualization</li>
</ul>Quan PanPDAL (Github)is a C++ BSD library for translating and manipulating point cloud data. It is very much like the GDAL library which handles raster and vector data. The About page provides high level overview of the library and its philosophy. Visit Readers and Writers to list data formats it supports, and see Filters for filtering operations that you can apply with PDAL.GDAL2018-01-05T00:00:00+01:002018-01-05T14:00:00+01:00http://www.quanpan302.com/sd/GDAL<p><strong><a href="https://gdal.org/" target="_blank">GDAL</a></strong> is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source License by the Open Source Geospatial Foundation. As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing.</p>
<p><a href="/assets/images/posts/2018-01-05-GDAL/gdal-20200627.pdf" target="_blank">gdal.pdf</a></p>
<ul>
<li>Raster Data Model</li>
<li>Multidimensional Raster Data Model</li>
<li>Vector Data Model</li>
<li>Geographic Networks Data Model</li>
<li>OGR SQL dialect and SQLITE SQL dialect</li>
<li>GDAL Virtual File Systems</li>
<li>Feature Style Specification</li>
<li>Configuration options</li>
</ul>
<h2 id="raster-drivers"><a href="https://gdal.org/drivers/raster/index.html" target="_blank">Raster drivers</a></h2>
<h2 id="vector-drivers"><a href="https://gdal.org/drivers/vector/index.html" target="_blank">Vector drivers</a></h2>
<h2 id="user-oriented-documentation"><a href="https://gdal.org/user/index.html" target="_blank">User oriented documentation</a></h2>
<h2 id="development"><a href="https://gdal.org/development/rfc/index.html" target="_blank">Development</a></h2>Quan PanGDAL is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source License by the Open Source Geospatial Foundation. As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing.Navigation2018-01-04T00:00:00+01:002018-01-04T14:00:00+01:00http://www.quanpan302.com/kg/Navigation<p><strong>Navigation</strong> is a field of study that focuses on the process of monitoring and controlling the movement of a craft or vehicle from one place to another. The field of navigation includes four general categories: land navigation, marine navigation, aeronautic navigation, and space navigation.</p>
<h2 id="navigation-data-standard-nds"><a href="https://en.wikipedia.org/wiki/Navigation_Data_Standard" target="_blank">Navigation Data Standard (NDS)</a></h2>
<p>The <em>Navigation Data Standard (<strong>NDS</strong>)</em> is a standardized format for automotive-grade <a href="https://en.wikipedia.org/wiki/Map_database_management" target="_blank">navigation databases</a>, jointly developed by automobile manufacturers and suppliers. NDS is an association registered in Germany. Members are automotive OEMs, map data providers, and navigation device/application providers.</p>
<p>The NDS standard is documented regarding database structures, interoperability requirements, and update processes. The NDS association provides various tools that can be used by the NDS members to develop and validate maps:</p>
<ul>
<li>NDS SQLite reference engine</li>
<li>Relational DataScript (RDS tool): Code generator for database access classes in Java and C++</li>
<li>Certification Bench: Validates NDS databases for compatibility based on detailed test cases and issues certificates</li>
<li>Investigation Modules: Execution framework for testing NDS databases on target hardware</li>
<li>Database Inspector: Desktop tool for visualizing NDS databases</li>
</ul>
<p><a href="/assets/images/posts/2018-01-04-Navigation/Overview_buildingblocks-nds-with-HAD.jpg" target="_blank">
<img src="/assets/images/posts/2018-01-04-Navigation/Overview_buildingblocks-nds-with-HAD.jpg" alt="" />
</a></p>
<h2 id="map-database-management"><a href="https://en.wikipedia.org/wiki/Map_database_management" target="_blank">Map database management</a></h2>
<p>Map database management systems are software programs designed to efficiently store and recall spatial information. They are widely used in localization and navigation, especially in automotive applications. Moreover, they are playing an increasingly important role in the emerging areas of location-based services, active safety functions and advanced driver-assistance systems. Common to these functions is the requirement for an on-board map database that contains information describing the road network.</p>
<p>Map providers generally collect, aggregate and supply data in a well-defined and documented file format that is specifically intended for information interchange, e.g. <a href="https://en.wikipedia.org/wiki/Navteq" target="_blank">Navteq</a> uses <a href="https://en.wikipedia.org/wiki/Standard_Interchange_Format" target="_blank">Standard Interchange Format (SIF)</a> and <a href="https://en.wikipedia.org/wiki/Geographic_Data_Files" target="_blank">Geographic Data Files (GDF)</a>, while Tele Atlas uses a proprietary form of GDF. It is usually in a plain-text form (ASCII) consisting of fields that are easily parsed and interpreted by the various parties who will handle it. The portable format allows additions, deletions and modifications to be readily performed by simple text-editing programs.</p>
<h3 id="standard-interchange-format-sif"><a href="https://en.wikipedia.org/wiki/Standard_Interchange_Format" target="_blank">Standard Interchange Format (SIF)</a></h3>
<p>Standard Interchange Format (SIF) is a geospatial data exchange format. A standard or neutral format used to move graphics files between DOD Project 2851 and is currently codified in Content Standard for Digital Geospatial Metadata maintained by the Federal Geographic Data Committee.</p>
<h3 id="geographic-data-files"><a href="https://en.wikipedia.org/wiki/Geographic_Data_Files" target="_blank">Geographic Data Files</a></h3>
<p>Geographic Data Files (GDF) is an interchange file format for geographic data. In contrast with generic GIS formats, GDF provides detailed rules for data capture and representation, and an extensive catalog of standard features, attributes and relationships. The most recent extension expanded applicability further towards pedestrian navigation, 3-D map rendering, and advanced driver-assistance systems (ADAS).</p>
<p>The maps in GDF format are provided by many map vendors such as</p>
<ul>
<li><a href="https://www.here.com" target="_blank">HERE</a></li>
<li><a href="https://www.tomtom.com" target="_blank">TomTom</a></li>
<li><a href="https://www.mapscape.eu" target="_blank">Mapscape BV</a></li>
<li><a href="https://www.and.com" target="_blank">Automotive Navigation Data, AND</a></li>
<li><a href="https://mobile.amap.com" target="_blank">AutoNavi, 高德地图</a></li>
<li><a href="https://www.navinfo.com" target="_blank">NavInfo, 四维图新</a></li>
<li><a href="https://en.wikipedia.org/wiki/GeoSmart" target="_blank">GeoSmart</a></li>
</ul>
<p>The specifications of <a href="https://www.iso.org/standard/54610.html" target="_blank">GDF5.0</a> were developed and compiled between 2001 and 2008, involving experts from Australia, Canada, Czech Republic, France, Germany, Japan, Republic of Korea, the Netherlands, and the United States of America. Extensive activities towards harmonization with <a href="https://committee.iso.org/home/tc211" target="_blank">ISO/TC211</a> standards were undertaken. GDF 5.0 was published in July 2011.</p>
<p>Major GDF5.0 enhancements include</p>
<ul>
<li>UML model migration & refinements</li>
<li>harmonization with <a href="https://en.wikipedia.org/wiki/Linear_referencing" target="_blank">linear referencing</a> and geo-spatial web standards</li>
<li>support for 3-D content and time coordinates</li>
<li>comprehensive character set and phonetic representations</li>
<li>new XML and SQL based delivery formats</li>
</ul>
<p><a href="/assets/images/posts/2018-01-04-Navigation/Information%20Exchange%20between%20GIS%20and%20Geospatial%20ITS%20Databases%20Based%20on%20a%20Generic%20Model.pdf" target="_blank">Information Exchange between GIS and Geospatial ITS Databases Based on a Generic Model.pdf</a></p>
<h2 id="geocode"><a href="https://en.wikipedia.org/wiki/Geocode">Geocode</a></h2>
<p>A geocode is a code that represents a geographic entity (location or object). It is a unique identifier of the entity, to distinguish it from others in a finite set of geographic entities. In general the geocode is a human-readable and short identifier.</p>
<p>Typical geocodes and entities represented by it:</p>
<ul>
<li>Country code and subdivision code. Polygon of the administrative boundaries of a country or a subdivision. The main examples are ISO codes
<ul>
<li><a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" target="_blank">ISO 3166-1 alpha-2 code</a> (e.g. AF for Afghanistan or BR for Brazil), and its subdivision conventions, such as AF subdivision codes (e.g. AF-GHO for Ghor province) or BR subdivision codes (e.g. BR-AM for Amazonas state).</li>
</ul>
</li>
<li>DGG cell ID. Identifier of a cell of a <a href="https://en.wikipedia.org/wiki/Discrete_global_grid" target="_blank">discrete global grid</a>
<ul>
<li>a <a href="https://en.wikipedia.org/wiki/Geohash">Geohash code</a> (e.g. ~0.023 km<sup>2</sup> cell 6vjyngd at the Brazilian’s center)</li>
<li>an <a href="https://en.wikipedia.org/wiki/Open_Location_Code">OLC code</a> (e.g. ~0.004 km<sup>2</sup> cell 58PJ642P+4 at the same point)</li>
</ul>
</li>
<li><a href="https://en.wikipedia.org/wiki/Postal_code">Postal code</a>. Polygon of a postal area
<ul>
<li>a <a href="https://en.wikipedia.org/wiki/C%C3%B3digo_de_Endere%C3%A7amento_Postal">CEP code</a> (e.g. 70040 represents a Brazilian’s central area for postal distribution).</li>
</ul>
</li>
</ul>
<h2 id="gps-tracking-application">GPS tracking application</h2>
<ul>
<li><a href="https://agilie.com/en/blog/how-to-make-a-gps-app-and-dont-get-lost-in-the-process" target="_blank">How to Make a GPS App and Don’t Get Lost in the Process</a></li>
</ul>Quan PanNavigation is a field of study that focuses on the process of monitoring and controlling the movement of a craft or vehicle from one place to another. The field of navigation includes four general categories: land navigation, marine navigation, aeronautic navigation, and space navigation.Remote Sensing2018-01-03T00:00:00+01:002018-01-03T14:00:00+01:00http://www.quanpan302.com/kg/RemoteSensing<p><strong>Remote sensing</strong> is the acquisition of information about an object or phenomenon without making physical contact with the object and thus in contrast to on-site observation, especially the Earth, <a href="https://en.wikipedia.org/wiki/Remote_sensing_satellite_and_data_overview" target="_blank">Remote sensing satellite and data overview</a>.</p>
<p>Remote sensing is used in numerous fields, including <strong>geography</strong>, <strong>land surveying</strong> and most <strong>Earth science disciplines</strong>, for example:</p>
<ul>
<li>hydrology</li>
<li>ecology</li>
<li>meteorology</li>
<li>oceanography</li>
<li>glaciology</li>
<li>geology</li>
</ul>
<p>“Most maps are about how we as a civi- lization, as different cultures, perceive our lives in this box that we live in” (quoted in Shapiro 2015).</p>
<h2 id="types-of-data-acquisition-techniques">Types of data acquisition techniques</h2>
<p>Within the scope of the combat against desertification, remote sensing allows researchers to follow up and monitor risk areas in the long term, to determine desertification factors, to support decision-makers in defining relevant measures of environmental management, and to assess their impacts.</p>
<p><a href="/assets/images/posts/2018-01-03-RemoteSensing/RemoteSensingIllustration.jpg" target="_blank">
<img src="/assets/images/posts/2018-01-03-RemoteSensing/RemoteSensingIllustration.jpg" alt="" />
</a></p>
<ul>
<li><strong>Conventional radar</strong> is mostly associated with aerial traffic control, early warning, and certain large scale meteorological data. <em>Doppler radar</em> is used by local law enforcements’ monitoring of speed limits and in enhanced meteorological collection such as wind speed and direction within weather systems in addition to precipitation location and intensity. Other types of <em>active collection</em> includes plasmas in the ionosphere. <em>Interferometric synthetic aperture radar</em> is used to produce precise digital elevation models of large scale terrain (See <em>RADARSAT, TerraSAR-X, Magellan</em>).</li>
<li><strong>Laser and radar altimeters</strong> on satellites have provided a wide range of data. By measuring the bulges of water caused by gravity, they map features on the seafloor to a resolution of a mile or so. By measuring the height and wavelength of ocean waves, the altimeters measure wind speeds and direction, and surface ocean currents and directions.</li>
<li><strong>Ultrasound (acoustic) and radar tide gauges</strong> measure sea level, tides and wave direction in coastal and offshore tide gauges.</li>
<li><strong>Light detection and ranging (LIDAR)</strong> is well known in examples of weapon ranging, laser illuminated homing of projectiles. LIDAR is used to detect and measure the concentration of various chemicals in the atmosphere, while <em>airborne LIDAR</em> can be used to measure heights of objects and features on the ground more accurately than with radar technology. Vegetation remote sensing is a principal application of LIDAR.</li>
<li><strong>Radiometers and photometers</strong> are the most common instrument in use, collecting <em>reflected</em> and <em>emitted</em> radiation in a wide range of frequencies. The most common are visible and <em>infrared sensors</em>, followed by microwave, gamma ray and rarely, ultraviolet. They may also be used to detect the emission spectra of various chemicals, providing data on chemical concentrations in the atmosphere.</li>
<li><strong>Radiometers</strong> are also used at night, because artificial light emissions are a key signature of human activity. Applications include remote sensing of population, GDP, and damage to infrastructure from war or disasters.</li>
<li><strong>Spectropolarimetric Imaging</strong> has been reported to be useful for target tracking purposes by researchers at the U.S. Army Research Laboratory. They determined that manmade items possess <em>polarimetric signatures</em> that are not found in natural objects. These conclusions were drawn from the imaging of military trucks, like the Humvee, and trailers with their acousto-optic tunable filter dual hyperspectral and spectropolarimetric VNIR Spectropolarimetric Imager.</li>
<li><strong>Stereographic pairs of aerial photographs</strong> have often been used to make topographic maps by imagery and terrain analysts in trafficability and highway departments for potential routes, in addition to modelling terrestrial habitat features.</li>
<li><strong>Simultaneous multi-spectral platforms</strong> such as Landsat have been in use since the 1970s. These thematic mappers take images in multiple wavelengths of <em>electro-magnetic radiation (multi-spectral)</em> and are usually found on Earth observation satellites, including (for example) the Landsat program or the IKONOS satellite. Maps of land cover and land use from thematic mapping can be used to prospect for minerals, detect or monitor land usage, detect invasive vegetation, deforestation, and examine the health of indigenous plants and crops, including entire farming regions or forests. Prominent scientists using remote sensing for this purpose include Janet Franklin and Ruth DeFries. Landsat images are used by regulatory agencies such as KYDOW to indicate water quality parameters including Secchi depth, chlorophyll a density and total phosphorus content. Weather satellites are used in meteorology and climatology.</li>
<li><strong>Hyperspectral imaging</strong> produces an image where each pixel has full spectral information with imaging narrow spectral bands over a contiguous spectral range. Hyperspectral imagers are used in various applications including mineralogy, biology, defence, and environmental measurements.</li>
</ul>
<h2 id="data-processing">Data processing</h2>
<p>In order to create sensor-based maps, most remote sensing systems expect to extrapolate sensor data in relation to a reference point including distances between known points on the ground. This depends on the type of sensor used.</p>
<ul>
<li><strong>Radiometric correction</strong>, Allows avoidance of radiometric errors and distortions. The illumination of objects on the Earth surface is uneven because of different properties of the relief. This factor is taken into account in the method of radiometric distortion correction. Radiometric correction gives a scale to the pixel values, e. g. the monochromatic scale of 0 to 255 will be converted to actual radiance values.</li>
<li><strong>Topographic correction (also called terrain correction)</strong>, In rugged mountains, as a result of terrain, the effective illumination of pixels varies considerably. In a remote sensing image, the pixel on the shady slope receives weak illumination and has a low radiance value, in contrast, the pixel on the sunny slope receives strong illumination and has a high radiance value. For the same object, the pixel radiance value on the shady slope will be different from that on the sunny slope. Additionally, different objects may have similar radiance values. These ambiguities seriously affected remote sensing image information extraction accuracy in mountainous areas. It became the main obstacle to further application of remote sensing images. The purpose of topographic correction is to eliminate this effect, recovering the true reflectivity or radiance of objects in horizontal conditions. It is the premise of quantitative remote sensing application.</li>
<li><strong>Atmospheric correction</strong>, Elimination of atmospheric haze by rescaling each frequency band so that its minimum value (usually realised in water bodies) corresponds to a pixel value of 0. The digitizing of data also makes it possible to manipulate the data by changing gray-scale values.</li>
</ul>
<h2 id="link">Link</h2>
<ul>
<li><a href="https://www.asprs.org/" target="_blank">asprs</a></li>
</ul>Quan PanRemote sensing is the acquisition of information about an object or phenomenon without making physical contact with the object and thus in contrast to on-site observation, especially the Earth, Remote sensing satellite and data overview.