Advertisement
cwdillon

h3-java Central Asian Khanates

Aug 12th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 34.51 KB | None | 0 0
  1. import com.google.common.collect.ImmutableList;
  2. import com.uber.h3core.AreaUnit;
  3. import com.uber.h3core.H3Core;
  4. import com.uber.h3core.util.GeoCoord;
  5.  
  6. import javafx.beans.property.SimpleObjectProperty;
  7. import javafx.css.StyleableStringProperty;
  8. import org.geotools.data.DataUtilities;
  9. import org.geotools.data.DefaultTransaction;
  10. import org.geotools.data.FileDataStore;
  11. import org.geotools.data.FileDataStoreFinder;
  12. import org.geotools.data.collection.ListFeatureCollection;
  13. import org.geotools.data.shapefile.ShapefileDataStore;
  14. import org.geotools.data.shapefile.ShapefileDataStoreFactory;
  15. import org.geotools.data.simple.SimpleFeatureIterator;
  16. import org.geotools.data.simple.SimpleFeatureSource;
  17. import org.geotools.data.simple.SimpleFeatureCollection;
  18. import org.geotools.data.simple.SimpleFeatureStore;
  19. import org.geotools.data.store.ContentFeatureSource;
  20. import org.geotools.factory.CommonFactoryFinder;
  21. import org.geotools.feature.DefaultFeatureCollection;
  22. import org.geotools.feature.simple.SimpleFeatureBuilder;
  23. import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
  24. import org.geotools.geometry.jts.JTSFactoryFinder;
  25. import org.geotools.referencing.crs.DefaultGeocentricCRS;
  26. import org.geotools.referencing.crs.DefaultGeographicCRS;
  27. import org.locationtech.jts.geom.*;
  28. import org.opengis.feature.simple.SimpleFeature;
  29. import org.opengis.feature.simple.SimpleFeatureType;
  30.  
  31.  
  32. import java.io.*;
  33. import java.net.URL;
  34. import java.util.*;
  35. import java.io.IOException;
  36. import java.util.stream.Collectors;
  37.  
  38. import java.util.List;
  39. import java.util.Set;
  40.  
  41. public class cakJSON {
  42.  
  43.     static List<Long> hexes;
  44.     static H3Core h3;
  45.     static boolean debugging = false;
  46.  
  47.     public static void main(String[] args) {
  48.         try {
  49.             h3 = H3Core.newInstance();
  50.             hexes = h3.polyfill(coords, null, 3);
  51. //            saveShapefile(hexes);
  52.             printJSON(hexes);
  53.  
  54.         } catch (IOException e) {
  55.             e.printStackTrace();
  56.         }
  57.  
  58. //        List<List<List<GeoCoord>>> cak = h3.h3SetToMultiPolygon(hexes, true);
  59. //        System.out.println(cak.toString());
  60.     }
  61.  
  62.     private static void printJSON(List<Long> inputs) throws IOException {
  63.         H3Core h3 = H3Core.newInstance();
  64.         double area = h3.hexArea(3, AreaUnit.km2);
  65.         int numHexes = inputs.size() - 1;
  66.         for (int j=0; j<numHexes; j++) {
  67.             Long l = inputs.get(j);
  68.             List<GeoCoord> border = h3.h3ToGeoBoundary(l);
  69.             int numVerts = border.size() - 1;
  70.  
  71.             String address = h3.h3ToString(l);
  72.             System.out.print("{ \"type\": \"Feature\", \"properties\": { \"AREA\":" + area + ", \"NAME\": \"" + address +
  73.                     "\"}, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [ [");
  74.  
  75.             for (int i=0; i<numVerts; i++) {
  76.                 GeoCoord g = border.get(i);
  77.                 System.out.print("[" + g.lat + ", " + g.lng + "], ");
  78.             }
  79.             GeoCoord g = border.get(numVerts);
  80.             System.out.println("[" + g.lat + ", " + g.lng + "] ] ] } }, ");
  81.         }
  82.         Long l = inputs.get(numHexes);
  83.         List<GeoCoord> border = h3.h3ToGeoBoundary(l);
  84.         int numVerts = border.size() - 1;
  85.  
  86.         String address = h3.h3ToString(l);
  87.         System.out.print("{ \"type\": \"Feature\", \"properties\": { \"AREA\":" + area + ", \"NAME\": \"" + address +
  88.                 "\"}, \"geometry\": { \"type\": \"Polygon\", \"coordinates\": [ [");
  89.  
  90.         for (int i=0; i<numVerts; i++) {
  91.             GeoCoord g = border.get(i);
  92.             System.out.print("[" + g.lat + ", " + g.lng + "], ");
  93.         }
  94.         GeoCoord g = border.get(numVerts);
  95.         System.out.print("[" + g.lat + ", " + g.lng + "] ");
  96.         System.out.println("] ] } }");
  97.     }
  98.  
  99.     private static void saveShapefile(List<Long> inputs) throws IOException {
  100.         /*
  101.         Takes a country name, it's abbreviation and a set of hexagons that will represent it and writes out a shapefile
  102.  
  103.          */
  104.         String filename = "src/main/data/hexMaps/politicalBoundaryHexes_directCAK.shp";
  105.         File file = new File(filename);
  106.  
  107.         H3Core h3 = H3Core.newInstance();
  108.         List<SimpleFeature> features = new ArrayList<>();
  109.         GeometryFactory gf = JTSFactoryFinder.getGeometryFactory();
  110.  
  111.         List<String> hexes = new ArrayList<>();
  112.         for (Long l:inputs) {
  113.             hexes.add(h3.h3ToString(l));
  114.         }
  115.  
  116.         DefaultFeatureCollection output = new DefaultFeatureCollection();
  117.  
  118.         final SimpleFeatureType HEX = createFeatureType();
  119.         SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(HEX);
  120.  
  121.         ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
  122.         Map<String, Serializable> params = new HashMap<>();
  123.         params.put("url", file.toURI().toURL());
  124.         params.put("create spatial index", Boolean.TRUE);
  125.  
  126.         ShapefileDataStore dataStore = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);
  127.         dataStore.createSchema(HEX);
  128.  
  129.         int index = 0;
  130.         for (String h:hexes) {
  131.             List<GeoCoord> geocoords = h3.h3ToGeoBoundary(h);
  132.             int numVerts = geocoords.size();
  133.             Coordinate[] coordinates = new Coordinate[numVerts + 1];
  134.             if(debugging){System.out.println("Processing hex " + index + ", @ " + h);}
  135.             for (int i=0; i<geocoords.size(); i++){
  136.                 coordinates[i] = new Coordinate(geocoords.get(i).lat, geocoords.get(i).lng);
  137.             }
  138.             coordinates[numVerts] = new Coordinate(geocoords.get(0).lat, geocoords.get(0).lng);
  139.             Polygon polygon = gf.createPolygon(coordinates);
  140.             Object[] values = new Object[]{polygon, index, h};
  141.             index++;
  142.             featureBuilder.addAll(values);
  143.  
  144.             SimpleFeature polyFeature = featureBuilder.buildFeature(h);
  145.             features.add(polyFeature);
  146.         }
  147.  
  148.         org.geotools.data.Transaction transaction = new DefaultTransaction("create");
  149.         String typeName = dataStore.getTypeNames()[0];
  150.         SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName);
  151.  
  152.         if (featureSource instanceof SimpleFeatureStore) {
  153.             SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource;
  154.             SimpleFeatureCollection collection = new ListFeatureCollection(HEX, features);
  155.             featureStore.setTransaction(transaction);
  156.             try {
  157.                 featureStore.addFeatures(collection);
  158.                 transaction.commit();
  159.             } catch (Exception e) {
  160.                 e.printStackTrace();
  161.                 transaction.rollback();
  162.             } finally {
  163.                 transaction.close();
  164.             }
  165.         } else {
  166.             System.out.println("Writing the Shapefile failed.");
  167.             System.exit(1); // Failure!
  168.         }
  169.     }
  170.  
  171.     private static SimpleFeatureType createFeatureType() {
  172.         SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
  173.         builder.setName("polygon");
  174.         builder.setCRS(DefaultGeocentricCRS.SPHERICAL);
  175.         builder.add("the_geom", Polygon.class);
  176.         builder.add("id", Long.class);
  177.         builder.add("address", String.class);
  178.         final SimpleFeatureType TYPE = builder.buildFeatureType();
  179.         return TYPE;
  180.     }
  181.  
  182.     public static List<GeoCoord> coords = ImmutableList.<GeoCoord>of(
  183.             new GeoCoord(93.527093032109775, 50.637586132064456),
  184.             new GeoCoord(93.211639404296875, 50.658432006835938),
  185.             new GeoCoord(92.792259216308594, 50.728515625),
  186.             new GeoCoord(92.363388061523438, 50.772258758544922),
  187.             new GeoCoord(91.985374450683594, 50.691349029541016),
  188.             new GeoCoord(91.305343627929688, 50.477447509765625),
  189.             new GeoCoord(90.791130065917969, 50.323673248291016),
  190.             new GeoCoord(90.436607360839844, 50.144565582275391),
  191.             new GeoCoord(90.0, 49.833415985107422),
  192.             new GeoCoord(89.992439270019531, 49.828029632568359),
  193.             new GeoCoord(89.665763854980469, 49.656471252441406),
  194.             new GeoCoord(89.394515991210938, 49.589752197265625),
  195.             new GeoCoord(88.770401000976562, 49.553764343261719),
  196.             new GeoCoord(88.500930786132812, 49.460952758789062),
  197.             new GeoCoord(88.141380310058594, 49.269794464111328),
  198.             new GeoCoord(88.072067260742188, 49.249858856201172),
  199.             new GeoCoord(87.962081909179688, 49.216640472412109),
  200.             new GeoCoord(87.705963134765625, 49.215274810791016),
  201.             new GeoCoord(87.603546142578125, 49.209003448486328),
  202.             new GeoCoord(87.355880737304688, 49.193840026855469),
  203.             new GeoCoord(87.111724853515625, 49.127334594726562),
  204.             new GeoCoord(86.986396789550781, 49.00927734375),
  205.             new GeoCoord(86.981338500976562, 48.885387420654297),
  206.             new GeoCoord(86.965751647949219, 48.670295715332031),
  207.             new GeoCoord(86.8280029296875, 48.571853637695312),
  208.             new GeoCoord(86.698150634765625, 48.545116424560547),
  209.             new GeoCoord(86.1580810546875, 48.503154754638672),
  210.             new GeoCoord(85.965599060058594, 48.378421783447266),
  211.             new GeoCoord(85.812911987304688, 48.1173095703125),
  212.             new GeoCoord(85.856231689453125, 47.779438018798828),
  213.             new GeoCoord(85.952217102050781, 47.461593627929688),
  214.             new GeoCoord(85.881675720214844, 47.285923004150391),
  215.             new GeoCoord(85.681312561035156, 47.109634399414062),
  216.             new GeoCoord(85.494071960449219, 47.063209533691406),
  217.             new GeoCoord(85.170738220214844, 47.035514831542969),
  218.             new GeoCoord(84.53985595703125, 47.071048736572266),
  219.             new GeoCoord(84.272727966308594, 47.134487152099609),
  220.             new GeoCoord(83.948387145996094, 47.197647094726562),
  221.             new GeoCoord(83.455375671386719, 47.311847686767578),
  222.             new GeoCoord(83.26318359375, 47.083641052246094),
  223.             new GeoCoord(83.031143188476562, 46.570156097412109),
  224.             new GeoCoord(82.833648681640625, 46.212856292724609),
  225.             new GeoCoord(82.704917907714844, 45.940341949462891),
  226.             new GeoCoord(82.6435546875, 45.752449035644531),
  227.             new GeoCoord(82.923332214355469, 45.521255493164062),
  228.             new GeoCoord(82.980209350585938, 45.392333984375),
  229.             new GeoCoord(82.909828186035156, 45.282135009765625),
  230.             new GeoCoord(82.805587768554688, 45.216999053955078),
  231.             new GeoCoord(82.62872314453125, 45.183753967285156),
  232.             new GeoCoord(82.11883544921875, 45.290779113769531),
  233.             new GeoCoord(81.893974304199219, 45.373531341552734),
  234.             new GeoCoord(81.736335754394531, 45.346832275390625),
  235.             new GeoCoord(81.249526977539062, 45.253765106201172),
  236.             new GeoCoord(80.440292358398438, 45.139606475830078),
  237.             new GeoCoord(80.263648986816406, 45.054744720458984),
  238.             new GeoCoord(80.166580200195312, 44.918869018554688),
  239.             new GeoCoord(80.136100769042969, 44.822154998779297),
  240.             new GeoCoord(80.240425109863281, 44.739048004150391),
  241.             new GeoCoord(80.405342102050781, 44.76568603515625),
  242.             new GeoCoord(80.623176574707031, 44.702507019042969),
  243.             new GeoCoord(80.636520385742188, 44.091545104980469),
  244.             new GeoCoord(80.791557312011719, 43.809558868408203),
  245.             new GeoCoord(80.922279357910156, 43.611095428466797),
  246.             new GeoCoord(80.975723266601562, 43.399429321289062),
  247.             new GeoCoord(80.876167297363281, 43.251190185546875),
  248.             new GeoCoord(80.558731079101562, 43.005516052246094),
  249.             new GeoCoord(80.414566040039062, 42.825050354003906),
  250.             new GeoCoord(80.405975341796875, 42.645374298095703),
  251.             new GeoCoord(80.468368530273438, 42.258411407470703),
  252.             new GeoCoord(80.482414245605469, 42.171272277832031),
  253.             new GeoCoord(80.45965576171875, 42.100643157958984),
  254.             new GeoCoord(80.312942504882812, 42.016525268554688),
  255.             new GeoCoord(79.876754760742188, 41.918022155761719),
  256.             new GeoCoord(79.274757385253906, 41.760948181152344),
  257.             new GeoCoord(79.074295043945312, 41.695804595947266),
  258.             new GeoCoord(78.891929626464844, 41.560291290283203),
  259.             new GeoCoord(78.60491943359375, 41.244987487792969),
  260.             new GeoCoord(78.314315795898438, 41.08978271484375),
  261.             new GeoCoord(78.0997314453125, 41.043811798095703),
  262.             new GeoCoord(77.892860412597656, 41.036273956298828),
  263.             new GeoCoord(77.331405639648438, 41.141994476318359),
  264.             new GeoCoord(77.22406005859375, 41.128593444824219),
  265.             new GeoCoord(77.014335632324219, 40.916263580322266),
  266.             new GeoCoord(76.805793762207031, 40.563320159912109),
  267.             new GeoCoord(76.685302734375, 40.453945159912109),
  268.             new GeoCoord(76.287261962890625, 40.394210815429688),
  269.             new GeoCoord(76.059257507324219, 40.329032897949219),
  270.             new GeoCoord(75.904594421386719, 40.353748321533203),
  271.             new GeoCoord(75.822273254394531, 40.609062194824219),
  272.             new GeoCoord(75.795364379882812, 40.640895843505859),
  273.             new GeoCoord(75.633659362792969, 40.627208709716797),
  274.             new GeoCoord(74.85211181640625, 40.296817779541016),
  275.             new GeoCoord(74.212318420410156, 39.980171203613281),
  276.             new GeoCoord(74.088607788085938, 39.896633148193359),
  277.             new GeoCoord(74.030738830566406, 39.800704956054688),
  278.             new GeoCoord(73.968223571777344, 39.468051910400391),
  279.             new GeoCoord(73.963592529296875, 39.437076568603516),
  280.             new GeoCoord(73.973838806152344, 38.97283935546875),
  281.             new GeoCoord(73.880661010742188, 38.872707366943359),
  282.             new GeoCoord(73.915687561035156, 38.735706329345703),
  283.             new GeoCoord(74.061981201171875, 38.558479309082031),
  284.             new GeoCoord(74.270263671875, 38.578739166259766),
  285.             new GeoCoord(74.372833251953125, 38.651397705078125),
  286.             new GeoCoord(74.471839904785156, 38.624443054199219),
  287.             new GeoCoord(74.783416748046875, 38.607051849365234),
  288.             new GeoCoord(74.906585693359375, 38.537681579589844),
  289.             new GeoCoord(75.039176940917969, 38.315517425537109),
  290.             new GeoCoord(75.035423278808594, 38.187808990478516),
  291.             new GeoCoord(75.048004150390625, 38.077190399169922),
  292.             new GeoCoord(75.116416931152344, 38.071922302246094),
  293.             new GeoCoord(75.13836669921875, 38.016796112060547),
  294.             new GeoCoord(75.081817626953125, 37.824398040771484),
  295.             new GeoCoord(75.192031860351562, 37.717891693115234),
  296.             new GeoCoord(75.123741149902344, 37.555850982666016),
  297.             new GeoCoord(75.213821411132812, 37.482490539550781),
  298.             new GeoCoord(75.132354736328125, 37.399299621582031),
  299.             new GeoCoord(75.096450805664062, 37.287349700927734),
  300.             new GeoCoord(74.936935424804688, 37.226375579833984),
  301.             new GeoCoord(74.682228088378906, 37.294967651367188),
  302.             new GeoCoord(74.45916748046875, 37.319171905517578),
  303.             new GeoCoord(74.340721130371094, 37.387371063232422),
  304.             new GeoCoord(74.086311340332031, 37.285282135009766),
  305.             new GeoCoord(73.648323059082031, 37.218914031982422),
  306.             new GeoCoord(73.587005615234375, 37.245235443115234),
  307.             new GeoCoord(73.6448974609375, 37.324199676513672),
  308.             new GeoCoord(73.555641174316406, 37.358707427978516),
  309.             new GeoCoord(73.250823974609375, 37.345260620117188),
  310.             new GeoCoord(72.917884826660156, 37.203117370605469),
  311.             new GeoCoord(72.651832580566406, 36.984550476074219),
  312.             new GeoCoord(72.386528015136719, 36.955730438232422),
  313.             new GeoCoord(72.051231384277344, 36.733043670654297),
  314.             new GeoCoord(71.893486022949219, 36.719448089599609),
  315.             new GeoCoord(71.728134155273438, 36.731250762939453),
  316.             new GeoCoord(71.670616149902344, 36.769107818603516),
  317.             new GeoCoord(71.596580505371094, 36.953220367431641),
  318.             new GeoCoord(71.50689697265625, 37.187328338623047),
  319.             new GeoCoord(71.590187072753906, 37.387371063232422),
  320.             new GeoCoord(71.634262084960938, 37.736324310302734),
  321.             new GeoCoord(71.647773742675781, 37.850986480712891),
  322.             new GeoCoord(71.57110595703125, 37.934989929199219),
  323.             new GeoCoord(71.353019714355469, 37.892852783203125),
  324.             new GeoCoord(71.4234619140625, 38.161746978759766),
  325.             new GeoCoord(71.164283752441406, 38.364101409912109),
  326.             new GeoCoord(71.0950927734375, 38.389186859130859),
  327.             new GeoCoord(70.922470092773438, 38.381858825683594),
  328.             new GeoCoord(70.79388427734375, 38.308952331542969),
  329.             new GeoCoord(70.733627319335938, 38.145660400390625),
  330.             new GeoCoord(70.537742614746094, 37.953067779541016),
  331.             new GeoCoord(70.516021728515625, 37.761943817138672),
  332.             new GeoCoord(70.518692016601562, 37.647361755371094),
  333.             new GeoCoord(70.425086975097656, 37.544986724853516),
  334.             new GeoCoord(70.225814819335938, 37.473854064941406),
  335.             new GeoCoord(70.166038513183594, 37.479881286621094),
  336.             new GeoCoord(69.902046203613281, 37.548442840576172),
  337.             new GeoCoord(69.770675659179688, 37.522247314453125),
  338.             new GeoCoord(69.73748779296875, 37.439304351806641),
  339.             new GeoCoord(69.740928649902344, 37.299282073974609),
  340.             new GeoCoord(69.605850219726562, 37.158512115478516),
  341.             new GeoCoord(69.511497497558594, 37.100704193115234),
  342.             new GeoCoord(69.340080261230469, 37.093391418457031),
  343.             new GeoCoord(69.056648254394531, 37.20001220703125),
  344.             new GeoCoord(68.910186767578125, 37.199188232421875),
  345.             new GeoCoord(68.648674011230469, 37.070446014404297),
  346.             new GeoCoord(68.387870788574219, 36.916248321533203),
  347.             new GeoCoord(68.169082641601562, 36.851390838623047),
  348.             new GeoCoord(68.0592041015625, 36.869865417480469),
  349.             new GeoCoord(68.000839233398438, 36.933181762695312),
  350.             new GeoCoord(67.982933044433594, 36.957763671875),
  351.             new GeoCoord(67.825416564941406, 37.174057006835938),
  352.             new GeoCoord(67.718978881835938, 37.230754852294922),
  353.             new GeoCoord(67.171363830566406, 37.253162384033203),
  354.             new GeoCoord(66.8802490234375, 37.257904052734375),
  355.             new GeoCoord(66.837493896484375, 37.265079498291016),
  356.             new GeoCoord(66.182792663574219, 37.374969482421875),
  357.             new GeoCoord(65.928390502929688, 37.507251739501953),
  358.             new GeoCoord(65.728073120117188, 37.346981048583984),
  359.             new GeoCoord(65.540580749511719, 37.256813049316406),
  360.             new GeoCoord(65.029647827148438, 37.16485595703125),
  361.             new GeoCoord(64.835792541503906, 36.800991058349609),
  362.             new GeoCoord(64.744384765625, 36.355064392089844),
  363.             new GeoCoord(64.698158264160156, 36.297542572021484),
  364.             new GeoCoord(64.469497680664062, 36.1881103515625),
  365.             new GeoCoord(63.575946807861328, 35.877777099609375),
  366.             new GeoCoord(63.320259094238281, 35.806381225585938),
  367.             new GeoCoord(63.266643524169922, 35.717037200927734),
  368.             new GeoCoord(63.266395568847656, 35.507160186767578),
  369.             new GeoCoord(63.167243957519531, 35.417579650878906),
  370.             new GeoCoord(62.881256103515625, 35.282432556152344),
  371.             new GeoCoord(62.641124725341797, 35.268367767333984),
  372.             new GeoCoord(62.383159637451172, 35.305080413818359),
  373.             new GeoCoord(61.933395385742188, 35.461532592773438),
  374.             new GeoCoord(61.511844635009766, 35.548202514648438),
  375.             new GeoCoord(61.425006866455078, 35.598587036132812),
  376.             new GeoCoord(61.389911651611328, 35.611122131347656),
  377.             new GeoCoord(61.322341918945312, 35.922416687011719),
  378.             new GeoCoord(61.317737579345703, 36.176853179931641),
  379.             new GeoCoord(61.300540924072266, 36.558528900146484),
  380.             new GeoCoord(61.217666625976562, 36.653530120849609),
  381.             new GeoCoord(60.863521575927734, 36.619735717773438),
  382.             new GeoCoord(60.549976348876953, 36.624340057373047),
  383.             new GeoCoord(60.255062103271484, 36.851825714111328),
  384.             new GeoCoord(59.444145202636719, 37.464813232421875),
  385.             new GeoCoord(59.175270080566406, 37.616142272949219),
  386.             new GeoCoord(58.878559112548828, 37.690914154052734),
  387.             new GeoCoord(58.653476715087891, 37.715137481689453),
  388.             new GeoCoord(58.298652648925781, 37.745002746582031),
  389.             new GeoCoord(57.928543090820312, 37.895801544189453),
  390.             new GeoCoord(57.610172271728516, 38.008686065673828),
  391.             new GeoCoord(57.429130554199219, 38.205158233642578),
  392.             new GeoCoord(56.954513549804688, 38.253475189208984),
  393.             new GeoCoord(56.720973968505859, 38.277664184570312),
  394.             new GeoCoord(56.566921234130859, 38.219470977783203),
  395.             new GeoCoord(56.334575653076172, 38.065303802490234),
  396.             new GeoCoord(56.184360504150391, 38.051719665527344),
  397.             new GeoCoord(55.833290100097656, 38.068885803222656),
  398.             new GeoCoord(55.559322357177734, 38.054622650146484),
  399.             new GeoCoord(55.373336791992188, 37.989891052246094),
  400.             new GeoCoord(55.159427642822266, 37.842201232910156),
  401.             new GeoCoord(54.879749298095703, 37.547672271728516),
  402.             new GeoCoord(54.670246124267578, 37.412784576416016),
  403.             new GeoCoord(54.417556762695312, 37.354072570800781),
  404.             new GeoCoord(54.218776702880859, 37.365299224853516),
  405.             new GeoCoord(54.188880920410156, 37.534698486328125),
  406.             new GeoCoord(54.131416320800781, 37.841190338134766),
  407.             new GeoCoord(54.083526611328125, 38.042327880859375),
  408.             new GeoCoord(54.1409912109375, 38.176418304443359),
  409.             new GeoCoord(54.1409912109375, 38.348819732666016),
  410.             new GeoCoord(54.1409912109375, 38.588268280029297),
  411.             new GeoCoord(54.188880920410156, 38.674468994140625),
  412.             new GeoCoord(54.236770629882812, 38.808559417724609),
  413.             new GeoCoord(54.275081634521484, 38.913917541503906),
  414.             new GeoCoord(54.236770629882812, 39.009693145751953),
  415.             new GeoCoord(54.121837615966797, 39.067161560058594),
  416.             new GeoCoord(53.978168487548828, 39.153362274169922),
  417.             new GeoCoord(53.882389068603516, 39.268299102783203),
  418.             new GeoCoord(53.863235473632812, 39.335342407226562),
  419.             new GeoCoord(53.786609649658203, 39.335342407226562),
  420.             new GeoCoord(53.700408935546875, 39.354499816894531),
  421.             new GeoCoord(53.537586212158203, 39.402389526367188),
  422.             new GeoCoord(53.451385498046875, 39.316188812255859),
  423.             new GeoCoord(53.413074493408203, 39.421543121337891),
  424.             new GeoCoord(53.451385498046875, 39.469432830810547),
  425.             new GeoCoord(53.518428802490234, 39.584369659423828),
  426.             new GeoCoord(53.575897216796875, 39.536479949951172),
  427.             new GeoCoord(53.748298645019531, 39.555633544921875),
  428.             new GeoCoord(53.939857482910156, 39.517322540283203),
  429.             new GeoCoord(53.997325897216797, 39.507743835449219),
  430.             new GeoCoord(54.0164794921875, 39.565212249755859),
  431.             new GeoCoord(53.872810363769531, 39.660991668701172),
  432.             new GeoCoord(53.757877349853516, 39.670570373535156),
  433.             new GeoCoord(53.719566345214844, 39.795082092285156),
  434.             new GeoCoord(53.796188354492188, 39.910018920898438),
  435.             new GeoCoord(53.8919677734375, 39.996219635009766),
  436.             new GeoCoord(53.709987640380859, 40.015373229980469),
  437.             new GeoCoord(53.566318511962891, 39.977062225341797),
  438.             new GeoCoord(53.393917083740234, 39.977062225341797),
  439.             new GeoCoord(53.250247955322266, 40.015373229980469),
  440.             new GeoCoord(53.192779541015625, 39.948329925537109),
  441.             new GeoCoord(53.116157531738281, 40.063262939453125),
  442.             new GeoCoord(53.049114227294922, 40.197353363037109),
  443.             new GeoCoord(53.049114227294922, 40.350601196289062),
  444.             new GeoCoord(53.029956817626953, 40.484691619873047),
  445.             new GeoCoord(53.106578826904297, 40.580471038818359),
  446.             new GeoCoord(53.154468536376953, 40.724136352539062),
  447.             new GeoCoord(53.173625946044922, 40.839073181152344),
  448.             new GeoCoord(53.221515655517578, 40.963584899902344),
  449.             new GeoCoord(53.25982666015625, 41.068943023681641),
  450.             new GeoCoord(53.355606079101562, 40.915695190429688),
  451.             new GeoCoord(53.38433837890625, 40.858226776123047),
  452.             new GeoCoord(53.460964202880859, 40.781604766845703),
  453.             new GeoCoord(53.642940521240234, 40.819915771484375),
  454.             new GeoCoord(53.815345764160156, 40.762451171875),
  455.             new GeoCoord(53.863235473632812, 40.829494476318359),
  456.             new GeoCoord(53.853656768798828, 40.896541595458984),
  457.             new GeoCoord(53.901546478271484, 40.896541595458984),
  458.             new GeoCoord(53.968589782714844, 40.886962890625),
  459.             new GeoCoord(53.997325897216797, 40.743293762207031),
  460.             new GeoCoord(54.045215606689453, 40.657093048095703),
  461.             new GeoCoord(54.179306030273438, 40.666671752929688),
  462.             new GeoCoord(54.313396453857422, 40.695404052734375),
  463.             new GeoCoord(54.428329467773438, 40.743293762207031),
  464.             new GeoCoord(54.533687591552734, 40.704982757568359),
  465.             new GeoCoord(54.619888305664062, 40.676250457763672),
  466.             new GeoCoord(54.658199310302734, 40.733715057373047),
  467.             new GeoCoord(54.591152191162109, 40.819915771484375),
  468.             new GeoCoord(54.571998596191406, 40.915695190429688),
  469.             new GeoCoord(54.658199310302734, 40.934852600097656),
  470.             new GeoCoord(54.706089019775391, 40.867805480957031),
  471.             new GeoCoord(54.811447143554688, 40.829494476318359),
  472.             new GeoCoord(54.926380157470703, 40.867805480957031),
  473.             new GeoCoord(55.022159576416016, 40.896541595458984),
  474.             new GeoCoord(55.03173828125, 41.001895904541016),
  475.             new GeoCoord(54.955112457275391, 41.155143737792969),
  476.             new GeoCoord(54.801868438720703, 41.260501861572266),
  477.             new GeoCoord(54.562419891357422, 41.404167175292969),
  478.             new GeoCoord(54.370861053466797, 41.499946594238281),
  479.             new GeoCoord(54.342128753662109, 41.64361572265625),
  480.             new GeoCoord(54.322971343994141, 41.796863555908203),
  481.             new GeoCoord(54.227191925048828, 41.873485565185547),
  482.             new GeoCoord(54.227191925048828, 41.969264984130859),
  483.             new GeoCoord(54.227191925048828, 42.065044403076172),
  484.             new GeoCoord(54.188880920410156, 42.122509002685547),
  485.             new GeoCoord(53.939857482910156, 42.1512451171875),
  486.             new GeoCoord(53.662097930908203, 42.112934112548828),
  487.             new GeoCoord(53.470539093017578, 42.103355407714844),
  488.             new GeoCoord(53.269405364990234, 42.045886993408203),
  489.             new GeoCoord(53.183204650878906, 41.921375274658203),
  490.             new GeoCoord(53.144893646240234, 41.787284851074219),
  491.             new GeoCoord(53.202358245849609, 41.701084136962891),
  492.             new GeoCoord(53.173625946044922, 41.576572418212891),
  493.             new GeoCoord(53.13531494140625, 41.39459228515625),
  494.             new GeoCoord(53.164047241210938, 41.289234161376953),
  495.             new GeoCoord(53.173625946044922, 41.155143737792969),
  496.             new GeoCoord(53.058689117431641, 41.404167175292969),
  497.             new GeoCoord(52.895866394042969, 41.547836303710938),
  498.             new GeoCoord(52.915023803710938, 41.624462127685547),
  499.             new GeoCoord(52.886287689208984, 41.710662841796875),
  500.             new GeoCoord(52.762935638427734, 41.774810791015625),
  501.             new GeoCoord(52.804409027099609, 41.95465087890625),
  502.             new GeoCoord(52.777431488037109, 42.035575866699219),
  503.             new GeoCoord(52.723480224609375, 42.089527130126953),
  504.             new GeoCoord(52.786422729492188, 42.2064208984375),
  505.             new GeoCoord(52.8763427734375, 42.296340942382812),
  506.             new GeoCoord(52.939285278320312, 42.440212249755859),
  507.             new GeoCoord(52.957271575927734, 42.575088500976562),
  508.             new GeoCoord(53.038196563720703, 42.665008544921875),
  509.             new GeoCoord(52.966262817382812, 42.772911071777344),
  510.             new GeoCoord(52.786422729492188, 42.844844818115234),
  511.             new GeoCoord(52.579612731933594, 42.817867279052734),
  512.             new GeoCoord(52.498683929443359, 42.889804840087891),
  513.             new GeoCoord(52.363807678222656, 42.862827301025391),
  514.             new GeoCoord(52.273887634277344, 42.844844818115234),
  515.             new GeoCoord(52.183967590332031, 42.925773620605469),
  516.             new GeoCoord(52.085060119628906, 43.06964111328125),
  517.             new GeoCoord(51.941188812255859, 43.195526123046875),
  518.             new GeoCoord(51.788326263427734, 43.195526123046875),
  519.             new GeoCoord(51.626472473144531, 43.186534881591797),
  520.             new GeoCoord(51.626472473144531, 43.276454925537109),
  521.             new GeoCoord(51.662441253662109, 43.402339935302734),
  522.             new GeoCoord(51.572521209716797, 43.573184967041016),
  523.             new GeoCoord(51.464618682861328, 43.62713623046875),
  524.             new GeoCoord(51.374698638916016, 43.735038757324219),
  525.             new GeoCoord(51.194862365722656, 44.094715118408203),
  526.             new GeoCoord(51.158893585205078, 44.220600128173828),
  527.             new GeoCoord(50.907123565673828, 44.274551391601562),
  528.             new GeoCoord(50.5924072265625, 44.310520172119141),
  529.             new GeoCoord(50.529464721679688, 44.382453918457031),
  530.             new GeoCoord(50.538455963134766, 44.580276489257812),
  531.             new GeoCoord(50.610389709472656, 44.634227752685547),
  532.             new GeoCoord(50.745269775390625, 44.661205291748047),
  533.             new GeoCoord(50.925106048583984, 44.652210235595703),
  534.             new GeoCoord(51.077968597412109, 44.643218994140625),
  535.             new GeoCoord(51.293773651123047, 44.580276489257812),
  536.             new GeoCoord(51.536552429199219, 44.499351501464844),
  537.             new GeoCoord(51.617481231689453, 44.535316467285156),
  538.             new GeoCoord(51.779335021972656, 44.571285247802734),
  539.             new GeoCoord(51.689414978027344, 44.643218994140625),
  540.             new GeoCoord(51.572521209716797, 44.697170257568359),
  541.             new GeoCoord(51.392684936523438, 44.787090301513672),
  542.             new GeoCoord(51.302764892578125, 44.894992828369141),
  543.             new GeoCoord(51.419658660888672, 45.056846618652344),
  544.             new GeoCoord(51.545547485351562, 45.0748291015625),
  545.             new GeoCoord(51.581512451171875, 45.191722869873047),
  546.             new GeoCoord(51.662441253662109, 45.326602935791016),
  547.             new GeoCoord(51.716392517089844, 45.389545440673828),
  548.             new GeoCoord(51.833286285400391, 45.371562957763672),
  549.             new GeoCoord(51.977157592773438, 45.407527923583984),
  550.             new GeoCoord(52.049091339111328, 45.452487945556641),
  551.             new GeoCoord(52.201953887939453, 45.398536682128906),
  552.             new GeoCoord(52.309856414794922, 45.398536682128906),
  553.             new GeoCoord(52.813400268554688, 45.416522979736328),
  554.             new GeoCoord(53.262992858886719, 45.35357666015625),
  555.             new GeoCoord(53.48779296875, 45.344585418701172),
  556.             new GeoCoord(53.415855407714844, 45.38055419921875),
  557.             new GeoCoord(53.262992858886719, 45.470470428466797),
  558.             new GeoCoord(53.047187805175781, 45.524425506591797),
  559.             new GeoCoord(53.038196563720703, 45.6593017578125),
  560.             new GeoCoord(53.128116607666016, 45.749221801757812),
  561.             new GeoCoord(53.254001617431641, 45.848133087158203),
  562.             new GeoCoord(53.352912902832031, 45.974018096923828),
  563.             new GeoCoord(53.406864166259766, 46.207805633544922),
  564.             new GeoCoord(53.4608154296875, 46.333694458007812),
  565.             new GeoCoord(53.388881683349609, 46.441593170166016),
  566.             new GeoCoord(53.325939178466797, 46.513530731201172),
  567.             new GeoCoord(53.370895385742188, 46.603446960449219),
  568.             new GeoCoord(53.48779296875, 46.693367004394531),
  569.             new GeoCoord(53.433841705322266, 46.747318267822266),
  570.             new GeoCoord(53.388881683349609, 46.882198333740234),
  571.             new GeoCoord(53.227027893066406, 46.936149597167969),
  572.             new GeoCoord(53.065174102783203, 46.954132080078125),
  573.             new GeoCoord(52.759449005126953, 46.999092102050781),
  574.             new GeoCoord(52.669528961181641, 46.927154541015625),
  575.             new GeoCoord(52.579612731933594, 46.891189575195312),
  576.             new GeoCoord(52.345821380615234, 46.855220794677734),
  577.             new GeoCoord(52.139011383056641, 46.909172058105469),
  578.             new GeoCoord(51.995140075683594, 47.026065826416016),
  579.             new GeoCoord(51.878246307373047, 47.053043365478516),
  580.             new GeoCoord(51.572521209716797, 47.10699462890625),
  581.             new GeoCoord(51.97655562539282, 47.47908512885126),
  582.             new GeoCoord(51.59076052796982, 48.122076957889597),
  583.             new GeoCoord(52.105153991200496, 49.408060615966285),
  584.             new GeoCoord(51.333563796354483, 50.436847542427621),
  585.             new GeoCoord(51.59076052796982, 51.079839371465972),
  586.             new GeoCoord(55.448711502199863, 51.722831200504309),
  587.             new GeoCoord(58.535072281583894, 50.951241005658304),
  588.             new GeoCoord(59.049465744814569, 52.494421395350315),
  589.             new GeoCoord(59.306662476429906, 53.651806687619334),
  590.             new GeoCoord(60.59264613450658, 55.323585443119022),
  591.             new GeoCoord(73.195285983658067, 55.323585443119022),
  592.             new GeoCoord(75.124261470773092, 54.16620015085001),
  593.             new GeoCoord(78.853614079195467, 50.822642639850628),
  594.             new GeoCoord(81.682778126964166, 50.308249176619967),
  595.             new GeoCoord(84.640540540540528, 50.565445908235297),
  596.             new GeoCoord(91.327655562539263, 52.494421395350315),
  597.             new GeoCoord(93.771024512884964, 52.365823029542646),
  598.             new GeoCoord(94.414016341923315, 51.337036103081303),
  599.             new GeoCoord(93.527093032109775, 50.637586132064456));
  600. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement