

STEM II Data Sources

Feb - 07 - 2007

*******************************************************************************************************************************************************************************************************************************************************

     There where three major data sources of GIS data for STEM II : U.S. Census Bureau, Diva-GIS and the United Nations Global Resource Information Database (GRID) - Europe. The difference among these data
sources is that the Diva-GIS data set DOES NOT contain area or population data, whereas the data set for Europe from the UN-GRID already comes with both area and population data. Similarly, area and population
data for the USA, Puerto Rico, Alaska and other U.S. Territories are provided by the U.S. Census Burea in separate files. Another difference
is that the Diva-GIS provides data at administration levels 0, 1, and 2. On the other hand, all data from UN-GRID is only level 1. To be able to use the Diva-GIS data, we had to complement it by search both the
area and population data for locations using a variety of online sources : CIA Factbook, City Population. All of the data was in the public domain.


     The mapping of data sources to countries is as follows :

	      U.S. Census Bureau : U.S.A. and Puerto Rico, Alaska, and  US Territories.

	      United Nations Global Resource Information Database (UNGRID) : Europe and Russia.

	      Diva - GIS : Rest of the World (Mexico, South America, Africa, Asia)

*******************************************************************************************************************************************************************************************************************************************************


U.S. Census Bureau

     GIS Data for the USA, Puerto Rico, Alaska and US Territories was downloaed from the U.S. Census Bureau web site. Area and population data was provided as well from the U.S. Census Burea site in the form
of Excel spreahsheets.

       URL :  http://www.census.gov/population/www/censusdata/density.html

       Statement : "All US Census Bureau materials, regardless of the media, are entirely in the public domain. There are no user fees, site licenses, or any special agreements etc for the public or private use, and or 
reuse of any census title. As tax funded product, it's all in the public record."

       Contact : 


*******************************************************************************************************************************************************************************************************************************************************

DIVA-GIS
    
    URL : http://www.diva-gis.org/data/DataServer.htm

    License Statement :  "From this page you can download various thematic maps and/or geo-referenced databases. All these maps and databases are in the public domain. The data is either in
shapefile or in gridfile format. Files have been compressed using the ZIP format. The data are not projected (i.e., in latitude/longitude). The maps appear as graphics files (GIF) that can be copied and
pasted into another application."


*******************************************************************************************************************************************************************************************************************************************************

CIA FACTBOOK

    We got a few area and population data values from the CIA Factbook.

     URL : https://www.cia.gov/cia/publications/factbook/index.html

     Statement : "The World Factbook is in the public domain and may be used freely by anyone at anytime without seeking permission. However, US Code prohibits use of the CIA seal in a manner
which implies that the CIA approved, endorsed, or authorized such use. If you have any questions about your intended use, you should consult with legal counsel. Further information on The World Factbook's 
use is described on the Contributors and Copyright Information page. As a courtesy, please cite The World Factbook when used."

     Contact :


*******************************************************************************************************************************************************************************************************************************************************

CITY POPULATION

     The second main source of area and population values was City Population.

     URL : http://www.citypopulation.de/

     Statement : "Please, reference data taken from these web pages as follows:
Thomas Brinkhoff: City Population, http://www.citypopulation.de."

     Contact : Thomas Brinkhoff :  mail@citypopulation.de 


*******************************************************************************************************************************************************************************************************************************************************

 UNITED NATIONS GLOBAL RESOURCE INFORMATION DATABASE (GRID) - Europe

      This is the main source of our data for Europe. It includes area and population for each location.

      URL : http://www.grid.unep.ch/data/data.php?category=human_related

      Statement : "Most of the UNEP/GRID data sets are freely available for download by users via the Internet. UNEP/GRID does not place any restrictions on the use of this data, but does request that users cite
 UNEP/GRID (and any other sources mentioned in documentation of the data provided) as data furnisher(s). For data sets not available 'on-line', requests made by non-commercial and non-private persons (i.e. those
 with no affiliation) will be filled at no cost, but will depend on data availability, UNEP/GRID workload and the nature of the data set being requested. Requests will be queued with priority given to those related to joint 
activities with UNEP programme areas and other UN agencies. Data sets with a "restricted access" rating will not be distributed; however, information about such data sets, including the distributor's name, will be sent 
to eligible organisations upon request.

                          Users of data sets supplied through UNEP/GRID are requested to incorporate in output products and reports acknowledgements to the originator of the data and to the fact that they were acquired
 through UNEP/GRID. Appropriate wording may be "UNESCO (1987) through UNEP/GRID-Europe" ".

       Contact : infogrid@grid.unep.ch

*******************************************************************************************************************************************************************************************************************************************************

OTHER (MINOR) SOURCES OF DATA : (mostly area and population data)

   A few (one or two) area, population, and location names where taken for a few countries from other online sources :


CHILE :

URL : http://www.ine.cl/ine/canales/chile_estadistico/home.php
URL : http://www.visitingchile.com/regiones/region-sur/region-bio-bio/provincia-arauco/provincia-arauco.php
URL : http://www.ine.cl/ine/canales/chile_estadistico/demografia_y_vitales/demografia/demografia.php


BRAZIL : 


URL : http://www.library.uu.nl/wesp/populstat/Americas/brazilt.htm
URL : http://www.ibge.gov.br/english/default.php
URL : http://www.goldfields.co.za/Investor/Annual_Reports/Fy_2003/gf_ar03/sd_03/story/study_6.htm


CHAD :

URL : http://www.inseed-tchad.org/

COLOMBIA :

URL : https://www.cia.gov/library/publications/the-world-factbook/


INSONESIA :

URL : http://www.bps.go.id/index.shtml

KAZHAKSTAN :

URL : http://www.stat.kz/stat/index.aspx?sl=news&l=en

LIBERIA :

URL : http://www.statoids.com/ulr.html

NAMIBIA :

URL : http://www.library.uu.nl/wesp/populstat/Africa/namibiap.htm

*******************************************************************************************************************************************************************************************************************************************************









