==============================================================================
 SIGRID 1 km SAMPLING GRID - UKRAINE (UA/UKR)
 Every plot tagged with its province (ADM1NM) and district (ADM2NM)
==============================================================================
 Generated 2026-07-10 10:10 UTC by build_all_countries.py v2.0
==============================================================================

==============================================================================
 1. WHAT THIS IS
==============================================================================

SIGRID is a global systematic sampling grid of points spaced 1 km apart.
This archive contains every SIGRID plot that falls inside Ukraine, and
for each plot the province and district it belongs to, taken from the
United Nations 2023 administrative boundaries.

The same plots are also provided at coarser sampling intensities (every
2 km, 3 km, ... up to 100 km), so you can pick the plot spacing that suits
your survey budget and precision target. Each coarser grid is a strict
subset of the 1x1 km grid: a plot in the 10x10 km file is also in the
1x1 km file, with the same CE_ID. This means you can start a survey at a
coarse intensity and densify later without moving or renumbering plots.

==============================================================================
 2. AT A GLANCE
==============================================================================

  Country                    : Ukraine (UA/UKR)
  Total plots (1x1 km)       : 597,997
  Land area (equal-area)     : 597,509 km2
  Plots per km2 (QA ratio)   : 1.0008   [ok]
  Provinces (ADM1NM)         : 28
  Districts (ADM2NM)         : 140
  Sampling intensities       : 17 (1x1 km to 100x100 km)
  Bounding box (lon)         : 22.1397 to 40.2113
  Bounding box (lat)         : 44.3932 to 52.3790
  Coordinate system          : WGS 84 geographic (EPSG:4326)
  Boundary source            : UN 2023 ADM2 (EarthMap public store)
  Plot grid source           : SIGRID 1000 m, Open Foris

==============================================================================
 3. FILES IN THIS ARCHIVE
==============================================================================

  Plots is the number of sample points at that intensity. Each file is a
  plain UTF-8 CSV with a header row.

  File                                   Spacing        Plots       Size
  ------------------------------------ --------- ------------ ----------
  Ukraine_1x1km.csv *                       1 km      597,997    97.3 MB
  Ukraine_2x2km.csv *                       2 km      149,483    10.0 MB
  Ukraine_3x3km.csv *                       3 km       66,469     4.5 MB
  Ukraine_4x4km.csv *                       4 km       37,355     2.5 MB
  Ukraine_5x5km.csv *                       5 km       23,923     1.6 MB
  Ukraine_6x6km.csv *                       6 km       16,610     1.1 MB
  Ukraine_8x8km.csv *                       8 km        9,346   641.1 KB
  Ukraine_9x9km.csv *                       9 km        7,382   506.3 KB
  Ukraine_10x10km.csv *                    10 km        5,986   410.2 KB
  Ukraine_12x12km.csv *                    12 km        4,151   284.6 KB
  Ukraine_15x15km.csv *                    15 km        2,661   182.3 KB
  Ukraine_16x16km.csv *                    16 km        2,337   160.2 KB
  Ukraine_20x20km.csv                      20 km        1,492   102.2 KB
  Ukraine_25x25km.csv                      25 km          956    65.7 KB
  Ukraine_30x30km.csv                      30 km          664    45.4 KB
  Ukraine_50x50km.csv                      50 km          239    16.4 KB
  Ukraine_100x100km.csv                   100 km           59     4.1 KB
  Ukraine_plot_counts_by_district.csv  per district            -    12.6 KB
  Ukraine_README.txt                           -            -          -

  Plot counts fall off roughly as 1/N^2: the 2x2 km grid holds about a
  quarter of the 1x1 km plots, the 10x10 km grid about one hundredth.

  (*) Holds more than 2,000 plots. Google Earth struggles beyond
      roughly that many placemarks, so divide these files before loading
      them into Collect Earth - see section 6.

==============================================================================
 4. COLUMN DICTIONARY
==============================================================================

  CE_ID         Unique, stable identifier of the plot in the global SIGRID
                grid. The SAME plot carries the SAME CE_ID in every file
                here and in the global SIGRID tiles. Use it as your key.
  yCoordinate   Latitude  of the plot centre, decimal degrees, WGS 84.
  xCoordinate   Longitude of the plot centre, decimal degrees, WGS 84.
  ADM1NM        Province / state / department name (UN 2023, level 1).
  ADM2NM        District / county / municipality name (UN 2023, level 2).
  grid_1 ...    Boolean flags, PRESENT ONLY IN THE 1x1 km FILE. grid_N is
  grid_100      true when the plot belongs to the N x N km sampling grid.
                grid_1 is true for every plot. The coarser CSVs omit these
                columns because the filename already states the intensity.

  Note on names: ADM1NM/ADM2NM are reproduced exactly as published by the
  UN, including diacritics (e.g. Oueme, Hadramawt). Files are UTF-8; open
  them as UTF-8 in Excel (Data > From Text/CSV > 65001) or accents break.

==============================================================================
 5. PLOTS BY PROVINCE
==============================================================================

  Province (ADM1NM)                         Plots (1x1 km)    Share
  ---------------------------------------- --------------- --------
  Odeska oblast                                     33,082     5.5%
  Dnipropetrovska oblast                            31,921     5.3%
  Chernihivska oblast                               31,889     5.3%
  Kharkivska oblast                                 31,422     5.3%
  Zhytomyrska oblast                                29,840     5.0%
  Poltavska oblast                                  28,717     4.8%
  Zaporizka oblast                                  27,042     4.5%
  Luhanska oblast                                   26,685     4.5%
  Donetska oblast                                   26,497     4.4%
  Vinnytska oblast                                  26,480     4.4%
  Avtonomna Respublika Krym                         25,580     4.3%
  Kyivska oblast                                    25,566     4.3%
  Khersonska oblast                                 25,319     4.2%
  Kirovohradska oblast                              24,567     4.1%
  Mykolaivska oblast                                23,912     4.0%
  Sumska oblast                                     23,833     4.0%
  Lvivska oblast                                    21,842     3.7%
  Cherkaska oblast                                  20,943     3.5%
  Khmelnytska oblast                                20,605     3.4%
  Volynska oblast                                   20,135     3.4%
  Rivnenska oblast                                  20,066     3.4%
  Ivano-Frankivska oblast                           13,906     2.3%
  Ternopilska oblast                                13,835     2.3%
  Zakarpatska oblast                                12,739     2.1%
  Chernivetska oblast                                8,113     1.4%
  Chornobylska zona                                  2,582     0.4%
  Misto Kyiv                                           828     0.1%
  Misto Sevastopol                                      51     0.0%
  ---------------------------------------- --------------- --------
  TOTAL                                            597,997   100.0%

  A full breakdown per district is in Ukraine_plot_counts_by_district.csv,
  which gives the plot count of every district at every intensity.

==============================================================================
 6. HOW TO USE THESE FILES
==============================================================================

  Choosing an intensity. Pick the coarsest grid that still gives you enough
  plots in your smallest reporting unit. If you report by district, open
  Ukraine_plot_counts_by_district.csv and check the district with the fewest plots.

  Python
    import pandas as pd
    df = pd.read_csv('Ukraine_10x10km.csv')
    df[df.ADM1NM == 'YourProvince']          # subset one province
    df.groupby('ADM2NM').size()              # plots per district

  R
    df <- read.csv('Ukraine_10x10km.csv', fileEncoding='UTF-8')
    table(df$ADM2NM)

  QGIS
    Layer > Add Layer > Add Delimited Text Layer. X field = xCoordinate,
    Y field = yCoordinate, CRS = EPSG:4326.

  Google Earth / Collect Earth
    The CSV can be used directly as a Collect Earth plot file: the first
    three columns are already an id (CE_ID) followed by latitude and
    longitude, which is the order Collect Earth expects. Keep the
    ADM1NM/ADM2NM columns to stratify or to hand districts to field teams.

  Splitting a file into smaller plot files
    Collect Earth draws one Google Earth placemark per plot, and Google
    Earth has trouble with KML files holding more than about 2,000
    plots. Any file marked (*) in section 3 should be divided first.

    Collect Earth ships a tool for exactly this:

        Tools -> Utilities -> Divide large CSV files

    Choose the large CSV, then pick one of:
      - how many smaller files to divide it into;
      - whether to randomize the order of the plots first;
      - or aggregate the plots using one of the columns in the CSV.

    The aggregate option is the one to use here. Select ADM1NM to get
    one CSV per province, or ADM2NM to get one CSV per district; each
    output file is named after the value of that column
    (Odeska_oblast.csv, Dnipropetrovska_oblast.csv, ...), which makes them straightforward to
    hand to field teams.

    Because CE_ID is unique and stable, plots keep their identity across
    the split, and interpreted results can be merged back together.

    See: https://openforis.support/questions/3623/

  Excel
    Do NOT double-click the CSV. Use Data > From Text/CSV and set File
    Origin to 65001: UTF-8, otherwise accented district names are corrupted.

==============================================================================
 7. HOW THIS WAS GENERATED
==============================================================================

  1. The UN 2023 ADM2 boundaries for the country were downloaded and any
     invalid polygon geometry repaired.
  2. The SIGRID 10 x 10 degree tiles that actually intersect the country
     were identified from the boundary geometry (not merely its bounding
     box, which is wrong for countries crossing the 180th meridian) and
     downloaded from:
       https://www.openforis.org/fileadmin/SIGRID_1000m_grids
  3. Every plot in those tiles was tested against the district polygons
     with a point-in-polygon join (predicate 'intersects', so a plot lying
     exactly on a boundary line is kept, not discarded). Plots outside all
     districts were dropped. A plot on a shared border is assigned to one
     district only, so no plot is ever duplicated.
  4. The tagged plots were split on the grid_N flags into the density files
     listed in section 3.

  Snap tolerance used: 0.0 degrees (disabled).
  Plots recovered by snapping: 0

==============================================================================
 8. QUALITY CONTROL
==============================================================================

  Because SIGRID plots sit on a 1 km lattice, the number of plots inside a
  country should equal that country's land area in square kilometres. That
  is the single most informative check on this dataset, and it is reported
  above as the QA ratio:

      597,997 plots / 597,509 km2  =  1.0008

  Status: ok

  A value inside 0.97-1.01 is considered correct. Values are
  typically 0.99-1.00; the small shortfall is explained in section 9.
  Additional checks applied to this file: no duplicate CE_ID, no plot
  assigned to more than one district, and no missing coordinates.

==============================================================================
 9. KNOWN LIMITATIONS
==============================================================================

  Coastlines. National boundaries are generalized. A small number of plots
  that are genuinely on land can fall a few hundred metres outside the
  published polygon and are therefore not included. This is the ~0.5%
  visible in the QA ratio. Widening the tolerance to recover them pulls in
  offshore sea points instead, which is worse, so the small undercount is
  deliberate.

  Boundary vintage. Districts follow the UN 2023 definition. If your
  national administration has since split or merged districts, the names
  here will not match your current official list.

  Disputed areas. Boundaries follow UN depiction; see the disclaimer.

==============================================================================
 10. PROVENANCE AND CITATION
==============================================================================

  Generated        : 2026-07-10 10:10 UTC
  Generator        : build_all_countries.py v2.0
  Plot grid        : SIGRID 1000 m (https://www.openforis.org/fileadmin/SIGRID_1000m_grids)
  Boundaries       : United Nations 2023, ADM2 (EarthMap public store)
  Coordinate system: EPSG:4326 (WGS 84)

  Suggested citation:
    Open Foris SIGRID 1 km sampling grid for Ukraine, tagged with UN 2023
    ADM1/ADM2 administrative names. Generated 2026-07-10 10:10 UTC.

==============================================================================
 11. DISCLAIMER
==============================================================================

  Administrative boundaries: United Nations 2023 (UN Geospatial, ADM2), obtained via the EarthMap public boundary store.
  The designations employed and the presentation of material on this product do not imply the expression of any opinion whatsoever on the part of the United Nations or FAO concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.

