const
MAXCALPOINTS = 10; // max. number of calibration points per graticule line
MAXCALLINES = 25; // max. number of calibration lines per map
MAXCALQUADS = 200; // max. number of calibration quadruples
MAXGMZOOMSTACK = 16; // depth of zoom stack
MapLRMargin = 30; // left and right margin on blank maps
MapTBMargin = 30; // top and bottom margin on blank maps
{$IFDEF PAIDVERS}
SDLVersionInfo = 'geomap_r951_full';
IsLightEd = false;
MINMAGNIFY = 0.1; // minimum magnification factor
MAXMAGNIFY = 10.0; // maximum magnification factor
MAXMAPSIZE = 38000000; // max. map size in pixels (width x height of image)
{$ELSE}
SDLVersionInfo = 'geomap_r951_lighted';
IsLightEd = true;
MINMAGNIFY = 0.5; // minimum magnification factor
MAXMAGNIFY = 2.0; // maximum magnification factor
MAXMAPSIZE = 3000000; // max. map size in pixels (width x height of image)
{$ENDIF}
Release = 951;
type
ESDLGeoMapError = class(ESDLError); { exception type to indicate errors }
TCoords = record
Latit : double;
Longit : double;
end;
TgmZoomStackEntry = record
Left: integer;
Top : integer;
MagF: double;
end;
TCorners = (gcoTopLeft, gcoBottomLeft, gcoBottomRight, gcoTopRight);
TCornerArray = array[TCorners] of TCoords;
TGratLineKind = (gtlMeridian, gtlParallel);
TShowGrat = (sgNone, sgPoints, sgLines, sgPointsAndLines);
TLandMarkAction = (lmaAdd, lmaRemove);
TLandMarkElement = (lmCross, lmSquare, lmTriangle, lmCircle, lmArrowFrom,
lmArrowTo, lmCrossBox, lmSpade, lmUserDef);
TLMIdentifier = string[15];
TOnDrawMapDataEvent = procedure (Sender: TObject; MapCanvas: TCanvas;
LatLow, LongLow, LatHigh, LongHigh: double; Wid, Hgt: integer);
const
LMTypeNames : array[TLandMarkElement] of string =
('Cross', 'Square', 'Triangle', 'Circle', 'ArrowFrom',
'ArrowTo', 'CrossBox', 'Spade', 'User-Defined');
{$IFDEF DEVELOPVERS}
{$I intf_geomap_futurevers.pas}
{$ENDIF}
type
TCountryData = record
Name : string[40];
Fips10 : string[2];
ISO3166_2 : string[2];
ISO3166_3 : string[3];
CLat : double;
CLong : double;
Capital : string[25];
CapLat : double;
CapLong : double;
CapAlt : integer;
end;
const
NUMCOUNTRYDT = 231;
CountryData : array [1..NUMCOUNTRYDT] of TCountryData =
((Name:'Afghanistan'; Fips10:'af'; ISO3166_2:'af'; ISO3166_3:'afg'; CLat: 33.00; CLong: 65.00; Capital:'Kabul'; CapLat: 34.5309; CapLong: 69.1368; CapAlt:1807),
(Name:'Albania'; Fips10:'al'; ISO3166_2:'al'; ISO3166_3:'alb'; CLat: 41.00; CLong: 20.00; Capital:'Tirana'; CapLat: 41.3317; CapLong: 19.8318; CapAlt:104),
(Name:'Algeria'; Fips10:'ag'; ISO3166_2:'dz'; ISO3166_3:'dza'; CLat: 28.00; CLong: 3.00; Capital:'Algiers'; CapLat: 36.7658; CapLong: 3.0319; CapAlt:0),
(Name:'American Samoa'; Fips10:'aq'; ISO3166_2:'as'; ISO3166_3:'asm'; CLat:-14.33; CLong:-170.00; Capital:'Pago Pago'; CapLat:-14.2793; CapLong:-170.7010; CapAlt:49),
(Name:'Andorra'; Fips10:'an'; ISO3166_2:'ad'; ISO3166_3:'and'; CLat: 42.50; CLong: 1.50; Capital:'Andorra la Vella'; CapLat: 42.5079; CapLong: 1.5156; CapAlt:1409),
(Name:'Angola'; Fips10:'ao'; ISO3166_2:'ao'; ISO3166_3:'ago'; CLat:-12.50; CLong: 18.50; Capital:'Luanda'; CapLat: -8.8124; CapLong: 13.2350; CapAlt:6),
(Name:'Anguilla'; Fips10:'av'; ISO3166_2:'ai'; ISO3166_3:'aia'; CLat: 18.25; CLong: -63.17; Capital:'The Valley'; CapLat: 18.2249; CapLong: -63.0669; CapAlt:0),
(Name:'Antarctica'; Fips10:'ay'; ISO3166_2:'aq'; ISO3166_3:'ata'; CLat:-90.00; CLong: 0.00; Capital:''; CapLat:-90.0000; CapLong: 0.0000; CapAlt:0),
(Name:'Antigua and Barbuda'; Fips10:'ac'; ISO3166_2:'ag'; ISO3166_3:'atg'; CLat: 17.05; CLong: -61.80; Capital:'Saint John''s'; CapLat: 17.1169; CapLong: -61.8476; CapAlt:0),
(Name:'Argentina'; Fips10:'ar'; ISO3166_2:'ar'; ISO3166_3:'arg'; CLat:-34.00; CLong: -64.00; Capital:'Buenos Aires'; CapLat:-34.6654; CapLong: -58.4096; CapAlt:10),
(Name:'Armenia'; Fips10:'am'; ISO3166_2:'am'; ISO3166_3:'arm'; CLat: 40.00; CLong: 45.00; Capital:'Yerevan'; CapLat: 40.2080; CapLong: 44.5327; CapAlt:1032),
(Name:'Aruba'; Fips10:'aa'; ISO3166_2:'aw'; ISO3166_3:'abw'; CLat: 12.50; CLong: -69.97; Capital:'Oranjestad'; CapLat: 12.5246; CapLong: -70.0265; CapAlt:13),
(Name:'Australia'; Fips10:'as'; ISO3166_2:'au'; ISO3166_3:'aus'; CLat:-27.00; CLong: 133.00; Capital:'Canberra'; CapLat:-35.3499; CapLong: 149.0420; CapAlt:605),
(Name:'Austria'; Fips10:'au'; ISO3166_2:'at'; ISO3166_3:'aut'; CLat: 47.33; CLong: 13.33; Capital:'Vienna'; CapLat: 48.2021; CapLong: 16.3210; CapAlt:170),
(Name:'Azerbaijan'; Fips10:'aj'; ISO3166_2:'az'; ISO3166_3:'aze'; CLat: 40.50; CLong: 47.50; Capital:'Baku'; CapLat: 40.3243; CapLong: 49.8162; CapAlt:1),
(Name:'Bahamas'; Fips10:'bf'; ISO3166_2:'bs'; ISO3166_3:'bhs'; CLat: 24.25; CLong: -76.00; Capital:'Nassau'; CapLat: 25.0672; CapLong: -77.3402; CapAlt:2),
(Name:'Bahrain'; Fips10:'ba'; ISO3166_2:'bh'; ISO3166_3:'bhr'; CLat: 26.00; CLong: 50.55; Capital:'Manama'; CapLat: 26.2149; CapLong: 50.5879; CapAlt:6),
(Name:'Bangladesh'; Fips10:'bg'; ISO3166_2:'bd'; ISO3166_3:'bgd'; CLat: 24.00; CLong: 90.00; Capital:'Dhaka'; CapLat: 23.7099; CapLong: 90.4071; CapAlt:3),
(Name:'Barbados'; Fips10:'bb'; ISO3166_2:'bb'; ISO3166_3:'brb'; CLat: 13.17; CLong: -59.53; Capital:'Bridgetown'; CapLat: 13.0935; CapLong: -59.6105; CapAlt:6),
(Name:'Belarus'; Fips10:'bo'; ISO3166_2:'by'; ISO3166_3:'blr'; CLat: 53.00; CLong: 28.00; Capital:'Minsk'; CapLat: 53.8999; CapLong: 27.5756; CapAlt:198),
(Name:'Belgium'; Fips10:'be'; ISO3166_2:'be'; ISO3166_3:'bel'; CLat: 50.83; CLong: 4.00; Capital:'Brussels'; CapLat: 50.8371; CapLong: 4.3676; CapAlt:76),
(Name:'Belize'; Fips10:'bh'; ISO3166_2:'bz'; ISO3166_3:'blz'; CLat: 17.25; CLong: -88.75; Capital:'Belmopan'; CapLat: 17.2617; CapLong: -88.7785; CapAlt:59),
(Name:'Benin'; Fips10:'bn'; ISO3166_2:'bj'; ISO3166_3:'ben'; CLat: 9.50; CLong: 2.25; Capital:'Porto-Novo'; CapLat: 6.4783; CapLong: 2.6325; CapAlt:38),
(Name:'Bermuda'; Fips10:'bd'; ISO3166_2:'bm'; ISO3166_3:'bmu'; CLat: 32.33; CLong: -64.75; Capital:'Hamilton'; CapLat: 32.3011; CapLong: -64.7993; CapAlt:0),
(Name:'Bhutan'; Fips10:'bt'; ISO3166_2:'bt'; ISO3166_3:'btn'; CLat: 27.50; CLong: 90.50; Capital:'Thimphu'; CapLat: 27.4426; CapLong: 89.6673; CapAlt:2736),
(Name:'Bolivia'; Fips10:'bl'; ISO3166_2:'bo'; ISO3166_3:'bol'; CLat:-17.00; CLong: -65.00; Capital:'Sucre'; CapLat:-19.0421; CapLong: -65.2559; CapAlt:2783),
(Name:'Bosnia and Herzegovina'; Fips10:'bk'; ISO3166_2:'ba'; ISO3166_3:'bih'; CLat: 44.00; CLong: 18.00; Capital:'Sarajevo'; CapLat: 43.8564; CapLong: 18.4134; CapAlt:577),
(Name:'Botswana'; Fips10:'bc'; ISO3166_2:'bw'; ISO3166_3:'bwa'; CLat:-22.00; CLong: 24.00; Capital:'Gaborone'; CapLat:-24.6541; CapLong: 25.9087; CapAlt:1014),
(Name:'Brazil'; Fips10:'br'; ISO3166_2:'br'; ISO3166_3:'bra'; CLat:-10.00; CLong: -55.00; Capital:'Brasilia'; CapLat:-15.7921; CapLong: -47.8978; CapAlt:1079),
(Name:'British Virgin Islands'; Fips10:'vi'; ISO3166_2:'vg'; ISO3166_3:'vgb'; CLat: 18.50; CLong: -64.50; Capital:'Road Town'; CapLat: 18.4328; CapLong: -64.6235; CapAlt:0),
(Name:'Brunei'; Fips10:'bx'; ISO3166_2:'bn'; ISO3166_3:'brn'; CLat: 4.50; CLong: 114.67; Capital:'Bandar Seri Begawan';CapLat: 4.9409; CapLong: 114.9490; CapAlt:0),
(Name:'Bulgaria'; Fips10:'bu'; ISO3166_2:'bg'; ISO3166_3:'bgr'; CLat: 43.00; CLong: 25.00; Capital:'Sofia'; CapLat: 42.7073; CapLong: 23.3319; CapAlt:591),
(Name:'Burkina Faso'; Fips10:'uv'; ISO3166_2:'bf'; ISO3166_3:'bfa'; CLat: 13.00; CLong: -2.00; Capital:'Ouagadougou'; CapLat: 12.3640; CapLong: -1.5283; CapAlt:305),
(Name:'Burma;Myanmar'; Fips10:'bm'; ISO3166_2:'mm'; ISO3166_3:'mmr'; CLat: 22.00; CLong: 98.00; Capital:'Rangoon'; CapLat: 19.7361; CapLong: 96.2089; CapAlt:77),
(Name:'Burundi'; Fips10:'by'; ISO3166_2:'bi'; ISO3166_3:'bdi'; CLat: -3.50; CLong: 30.00; Capital:'Bujumbura'; CapLat: -3.3725; CapLong: 29.3561; CapAlt:794),
(Name:'Cambodia'; Fips10:'cb'; ISO3166_2:'kh'; ISO3166_3:'khm'; CLat: 13.00; CLong: 105.00; Capital:'Phnom Penh'; CapLat: 11.5647; CapLong: 104.9130; CapAlt:15),
(Name:'Cameroon'; Fips10:'cm'; ISO3166_2:'cm'; ISO3166_3:'cmr'; CLat: 6.00; CLong: 12.00; Capital:'Yaounde'; CapLat: 3.8651; CapLong: 11.5136; CapAlt:726),
(Name:'Canada'; Fips10:'ca'; ISO3166_2:'ca'; ISO3166_3:'can'; CLat: 60.00; CLong: -95.00; Capital:'Ottawa'; CapLat: 45.4175; CapLong: -75.6929; CapAlt:74),
(Name:'Cape Verde'; Fips10:'cv'; ISO3166_2:'cv'; ISO3166_3:'cpv'; CLat: 16.00; CLong: -24.00; Capital:'Praia'; CapLat: 14.9233; CapLong: -23.5212; CapAlt:0),
(Name:'Cayman Islands'; Fips10:'cj'; ISO3166_2:'ky'; ISO3166_3:'cym'; CLat: 19.50; CLong: -80.50; Capital:'George Town'; CapLat: 19.3022; CapLong: -81.3857; CapAlt:3),
(Name:'Central African Republic'; Fips10:'ct'; ISO3166_2:'cf'; ISO3166_3:'caf'; CLat: 7.00; CLong: 21.00; Capital:'Bangui'; CapLat: 4.3659; CapLong: 18.5623; CapAlt:369),
(Name:'Chad'; Fips10:'cd'; ISO3166_2:'td'; ISO3166_3:'tcd'; CLat: 15.00; CLong: 19.00; Capital:'N''Djamena'; CapLat: 12.1041; CapLong: 15.0505; CapAlt:298),
(Name:'Chile'; Fips10:'ci'; ISO3166_2:'cl'; ISO3166_3:'chl'; CLat:-30.00; CLong: -71.00; Capital:'Santiago'; CapLat:-33.4750; CapLong: -70.6475; CapAlt:521),
(Name:'China'; Fips10:'ch'; ISO3166_2:'cn'; ISO3166_3:'chn'; CLat: 35.00; CLong: 105.00; Capital:'Beijing'; CapLat: 39.9062; CapLong: 116.3880; CapAlt:63),
(Name:'Christmas Island'; Fips10:'kt'; ISO3166_2:'cx'; ISO3166_3:'cxr'; CLat:-10.50; CLong: 105.67; Capital:'The Settlement'; CapLat:-10.4286; CapLong: 105.6810; CapAlt:0),
(Name:'Cocos Islands'; Fips10:'ck'; ISO3166_2:'cc'; ISO3166_3:'cck'; CLat:-12.50; CLong: 96.83; Capital:'West Island'; CapLat:-12.1401; CapLong: 96.8347; CapAlt:0),
(Name:'Colombia'; Fips10:'co'; ISO3166_2:'co'; ISO3166_3:'col'; CLat: 4.00; CLong: -72.00; Capital:'Bogota'; CapLat: 4.6302; CapLong: -74.0805; CapAlt:2619),
(Name:'Comoros'; Fips10:'cn'; ISO3166_2:'km'; ISO3166_3:'com'; CLat:-12.17; CLong: 44.25; Capital:'Moroni'; CapLat:-11.7005; CapLong: 43.2434; CapAlt:110),
(Name:'Congo, Democratic Republic of the'; Fips10:'cg'; ISO3166_2:'cd'; ISO3166_3:'cod'; CLat: 0.00; CLong: 25.00; Capital:'Kinshasa'; CapLat: -4.2808; CapLong: 15.2837; CapAlt:155),
(Name:'Congo, Republic of the'; Fips10:'cf'; ISO3166_2:'cg'; ISO3166_3:'cog'; CLat: -1.00; CLong: 15.00; Capital:'Brazzaville'; CapLat: -4.3208; CapLong: 15.2987; CapAlt:240),
(Name:'Cook Islands'; Fips10:'cw'; ISO3166_2:'ck'; ISO3166_3:'cok'; CLat:-21.23; CLong:-159.77; Capital:'Avarua'; CapLat:-21.2039; CapLong:-159.7660; CapAlt:208),
(Name:'Costa Rica'; Fips10:'cs'; ISO3166_2:'cr'; ISO3166_3:'cri'; CLat: 10.00; CLong: -84.00; Capital:'San Jose'; CapLat: 9.9305; CapLong: -84.0786; CapAlt:1146),
(Name:'Cote d''Ivoire'; Fips10:'iv'; ISO3166_2:'ci'; ISO3166_3:'civ'; CLat: 8.00; CLong: -5.00; Capital:'Yamoussoukro'; CapLat: 6.8184; CapLong: -5.2826; CapAlt:217),
(Name:'Croatia'; Fips10:'hr'; ISO3166_2:'hr'; ISO3166_3:'hrv'; CLat: 45.17; CLong: 15.50; Capital:'Zagreb'; CapLat: 45.8071; CapLong: 15.9644; CapAlt:130),
(Name:'Cuba'; Fips10:'cu'; ISO3166_2:'cu'; ISO3166_3:'cub'; CLat: 21.50; CLong: -80.00; Capital:'Havana'; CapLat: 23.1168; CapLong: -82.3886; CapAlt:4),
(Name:'Cyprus'; Fips10:'cy'; ISO3166_2:'cy'; ISO3166_3:'cyp'; CLat: 35.00; CLong: 33.00; Capital:'Nicosia'; CapLat: 35.1710; CapLong: 33.3690; CapAlt:134),
(Name:'Czech Republic'; Fips10:'ez'; ISO3166_2:'cz'; ISO3166_3:'cze'; CLat: 49.75; CLong: 15.50; Capital:'Prague'; CapLat: 50.0785; CapLong: 14.4423; CapAlt:244),
(Name:'Denmark'; Fips10:'da'; ISO3166_2:'dk'; ISO3166_3:'dnk'; CLat: 56.00; CLong: 10.00; Capital:'Copenhagen'; CapLat: 55.7040; CapLong: 12.5234; CapAlt:0),
(Name:'Djibouti'; Fips10:'dj'; ISO3166_2:'dj'; ISO3166_3:'dji'; CLat: 11.50; CLong: 43.00; Capital:'Djibouti'; CapLat: 11.5941; CapLong: 43.1452; CapAlt:0),
(Name:'Dominica'; Fips10:'do'; ISO3166_2:'dm'; ISO3166_3:'dma'; CLat: 15.42; CLong: -61.33; Capital:'Roseau'; CapLat: 15.2987; CapLong: -61.3943; CapAlt:0),
(Name:'Dominican Republic'; Fips10:'dr'; ISO3166_2:'do'; ISO3166_3:'dom'; CLat: 19.00; CLong: -70.67; Capital:'Santo Domingo'; CapLat: 18.4893; CapLong: -69.8993; CapAlt:0),
(Name:'East Timor;Timor Lestre'; Fips10:'tt'; ISO3166_2:'tl'; ISO3166_3:'tls'; CLat: -8.83; CLong: 125.92; Capital:'Dili'; CapLat: -8.5707; CapLong: 125.5810; CapAlt:11),
(Name:'Ecuador'; Fips10:'ec'; ISO3166_2:'ec'; ISO3166_3:'ecu'; CLat: -2.00; CLong: -77.50; Capital:'Quito'; CapLat: -0.2295; CapLong: -78.5243; CapAlt:2763),
(Name:'Egypt'; Fips10:'eg'; ISO3166_2:'eg'; ISO3166_3:'egy'; CLat: 27.00; CLong: 30.00; Capital:'Cairo'; CapLat: 30.0779; CapLong: 31.2508; CapAlt:22),
(Name:'El Salvador'; Fips10:'es'; ISO3166_2:'sv'; ISO3166_3:'slv'; CLat: 13.83; CLong: -88.92; Capital:'San Salvador'; CapLat: 13.7014; CapLong: -89.2002; CapAlt:658),
(Name:'Equatorial Guinea'; Fips10:'ek'; ISO3166_2:'gq'; ISO3166_3:'gnq'; CLat: 2.00; CLong: 10.00; Capital:'Malabo'; CapLat: 3.7536; CapLong: 8.7846; CapAlt:107),
(Name:'Eritrea'; Fips10:'er'; ISO3166_2:'er'; ISO3166_3:'eri'; CLat: 15.00; CLong: 39.00; Capital:'Asmara'; CapLat: 15.3324; CapLong: 38.9262; CapAlt:2363),
(Name:'Estonia'; Fips10:'en'; ISO3166_2:'ee'; ISO3166_3:'est'; CLat: 59.00; CLong: 26.00; Capital:'Tallinn'; CapLat: 59.4465; CapLong: 24.7603; CapAlt:37),
(Name:'Ethiopia'; Fips10:'et'; ISO3166_2:'et'; ISO3166_3:'eth'; CLat: 8.00; CLong: 38.00; Capital:'Addis Ababa'; CapLat: 9.0227; CapLong: 38.7468; CapAlt:2362),
(Name:'Falkland Islands; Malvinas'; Fips10:'fk'; ISO3166_2:'fk'; ISO3166_3:'flk'; CLat:-51.75; CLong: -59.00; Capital:'Stanley'; CapLat:-51.7010; CapLong: -57.8492; CapAlt:0),
(Name:'Faroe Islands'; Fips10:'fo'; ISO3166_2:'fo'; ISO3166_3:'fro'; CLat: 62.00; CLong: -7.00; Capital:'Torshavn'; CapLat: 62.0177; CapLong: -6.7719; CapAlt:0),
(Name:'Fiji'; Fips10:'fj'; ISO3166_2:'fj'; ISO3166_3:'fji'; CLat:-18.00; CLong: 175.00; Capital:'Suva'; CapLat:-18.1426; CapLong: 178.4310; CapAlt:0),
(Name:'Finland'; Fips10:'fi'; ISO3166_2:'fi'; ISO3166_3:'fin'; CLat: 64.00; CLong: 26.00; Capital:'Helsinki'; CapLat: 60.1733; CapLong: 24.9486; CapAlt:25),
(Name:'France'; Fips10:'fr'; ISO3166_2:'fr'; ISO3166_3:'fra'; CLat: 46.00; CLong: 2.00; Capital:'Paris'; CapLat: 48.8521; CapLong: 2.3490; CapAlt:34),
(Name:'French Guiana'; Fips10:'fg'; ISO3166_2:'gf'; ISO3166_3:'guf'; CLat: 4.00; CLong: -53.00; Capital:'Cayenne'; CapLat: 4.9346; CapLong: -52.3303; CapAlt:32),
(Name:'French Polynesia'; Fips10:'fp'; ISO3166_2:'pf'; ISO3166_3:'pyf'; CLat:-15.00; CLong:-140.00; Capital:'Papeete'; CapLat:-17.5350; CapLong:-149.5700; CapAlt:59),
(Name:'Gabon'; Fips10:'gb'; ISO3166_2:'ga'; ISO3166_3:'gab'; CLat: -1.00; CLong: 11.75; Capital:'Libreville'; CapLat: 0.3908; CapLong: 9.4536; CapAlt:0),
(Name:'Gambia'; Fips10:'ga'; ISO3166_2:'gm'; ISO3166_3:'gmb'; CLat: 13.47; CLong: -16.57; Capital:'Banjul'; CapLat: 13.4550; CapLong: -16.5887; CapAlt:0),
(Name:'Georgia'; Fips10:'gg'; ISO3166_2:'ge'; ISO3166_3:'geo'; CLat: 42.00; CLong: 43.50; Capital:'T''bilisi'; CapLat: 41.7218; CapLong: 44.7831; CapAlt:451),
(Name:'Germany'; Fips10:'gm'; ISO3166_2:'de'; ISO3166_3:'deu'; CLat: 51.00; CLong: 9.00; Capital:'Berlin'; CapLat: 52.5163; CapLong: 13.3276; CapAlt:34),
(Name:'Ghana'; Fips10:'gh'; ISO3166_2:'gh'; ISO3166_3:'gha'; CLat: 8.00; CLong: -2.00; Capital:'Accra'; CapLat: 5.5586; CapLong: -0.2009; CapAlt:98),
(Name:'Gibraltar'; Fips10:'gi'; ISO3166_2:'gi'; ISO3166_3:'gib'; CLat: 36.13; CLong: -5.35; Capital:'Gibraltar'; CapLat: 36.1293; CapLong: -5.3520; CapAlt:447),
(Name:'Greece'; Fips10:'gr'; ISO3166_2:'gr'; ISO3166_3:'grc'; CLat: 39.00; CLong: 22.00; Capital:'Athens'; CapLat: 37.9440; CapLong: 23.6529; CapAlt:153),
(Name:'Greenland'; Fips10:'gl'; ISO3166_2:'gl'; ISO3166_3:'grl'; CLat: 72.00; CLong: -40.00; Capital:'Nuuk'; CapLat: 64.1812; CapLong: -51.7300; CapAlt:0),
(Name:'Grenada'; Fips10:'gj'; ISO3166_2:'gd'; ISO3166_3:'grd'; CLat: 12.12; CLong: -61.67; Capital:'Saint George''s'; CapLat: 12.0653; CapLong: -61.7449; CapAlt:25),
(Name:'Guadeloupe'; Fips10:'gp'; ISO3166_2:'gp'; ISO3166_3:'glp'; CLat: 16.25; CLong: -61.58; Capital:'Basse-Terre'; CapLat: 16.0027; CapLong: -61.7259; CapAlt:0),
(Name:'Guam'; Fips10:'gq'; ISO3166_2:'gu'; ISO3166_3:'gum'; CLat: 13.47; CLong: 144.78; Capital:'Hagatna'; CapLat: 13.4667; CapLong: 144.7470; CapAlt:9),
(Name:'Guatemala'; Fips10:'gt'; ISO3166_2:'gt'; ISO3166_3:'gtm'; CLat: 15.50; CLong: -90.25; Capital:'Guatemala'; CapLat: 14.6180; CapLong: -90.5249; CapAlt:1529),
(Name:'Guernsey'; Fips10:'gk'; ISO3166_2:'gg'; ISO3166_3:'ggy'; CLat: 49.47; CLong: -2.58; Capital:'Saint Peter Port'; CapLat: 49.4660; CapLong: -2.5522; CapAlt:0),
(Name:'Guinea'; Fips10:'gv'; ISO3166_2:'gn'; ISO3166_3:'gin'; CLat: 11.00; CLong: -10.00; Capital:'Conakry'; CapLat: 9.5504; CapLong: -13.6716; CapAlt:0),
(Name:'Guinea-Bissau'; Fips10:'pu'; ISO3166_2:'gw'; ISO3166_3:'gnb'; CLat: 12.00; CLong: -15.00; Capital:'Bissau'; CapLat: 11.8640; CapLong: -15.5982; CapAlt:0),
(Name:'Guyana'; Fips10:'gy'; ISO3166_2:'gy'; ISO3166_3:'guy'; CLat: 5.00; CLong: -59.00; Capital:'Georgetown'; CapLat: 6.8046; CapLong: -58.1548; CapAlt:0),
(Name:'Haiti'; Fips10:'ha'; ISO3166_2:'ht'; ISO3166_3:'hti'; CLat: 19.00; CLong: -72.42; Capital:'Port-au-Prince'; CapLat: 18.5430; CapLong: -72.3431; CapAlt:98),
(Name:'Honduras'; Fips10:'ho'; ISO3166_2:'hn'; ISO3166_3:'hnd'; CLat: 15.00; CLong: -86.50; Capital:'Tegucigalpa'; CapLat: 14.0991; CapLong: -87.2031; CapAlt:980),
(Name:'Hungary'; Fips10:'hu'; ISO3166_2:'hu'; ISO3166_3:'hun'; CLat: 47.00; CLong: 20.00; Capital:'Budapest'; CapLat: 47.4976; CapLong: 19.0936; CapAlt:102),
(Name:'Iceland'; Fips10:'ic'; ISO3166_2:'is'; ISO3166_3:'isl'; CLat: 65.00; CLong: -18.00; Capital:'Reykjavik'; CapLat: 64.1353; CapLong: -21.8952; CapAlt:15),
(Name:'India'; Fips10:'in'; ISO3166_2:'in'; ISO3166_3:'ind'; CLat: 20.00; CLong: 77.00; Capital:'New Delhi'; CapLat: 28.5687; CapLong: 77.2168; CapAlt:210),
(Name:'Indonesia'; Fips10:'id'; ISO3166_2:'id'; ISO3166_3:'idn'; CLat: -5.00; CLong: 120.00; Capital:'Jakarta'; CapLat: -6.1829; CapLong: 106.8290; CapAlt:3),
(Name:'Iran'; Fips10:'ir'; ISO3166_2:'ir'; ISO3166_3:'irn'; CLat: 32.00; CLong: 53.00; Capital:'Tehran'; CapLat: 35.6962; CapLong: 51.4229; CapAlt:1138),
(Name:'Iraq'; Fips10:'iz'; ISO3166_2:'iq'; ISO3166_3:'irq'; CLat: 33.00; CLong: 44.00; Capital:'Baghdad'; CapLat: 33.3340; CapLong: 44.3978; CapAlt:40),
(Name:'Ireland'; Fips10:'ei'; ISO3166_2:'ie'; ISO3166_3:'irl'; CLat: 53.00; CLong: -8.00; Capital:'Dublin'; CapLat: 53.3416; CapLong: -6.2573; CapAlt:8),
(Name:'Israel'; Fips10:'is'; ISO3166_2:'il'; ISO3166_3:'isr'; CLat: 31.50; CLong: 34.75; Capital:'Jerusalem'; CapLat: 31.7738; CapLong: 35.2252; CapAlt:580),
(Name:'Italy'; Fips10:'it'; ISO3166_2:'it'; ISO3166_3:'ita'; CLat: 42.83; CLong: 12.83; Capital:'Rome'; CapLat: 41.8955; CapLong: 12.4906; CapAlt:14),
(Name:'Jamaica'; Fips10:'jm'; ISO3166_2:'jm'; ISO3166_3:'jam'; CLat: 18.25; CLong: -77.50; Capital:'Kingston'; CapLat: 18.0157; CapLong: -76.7973; CapAlt:53),
(Name:'Japan'; Fips10:'ja'; ISO3166_2:'jp'; ISO3166_3:'jpn'; CLat: 36.00; CLong: 138.00; Capital:'Tokyo'; CapLat: 35.6831; CapLong: 139.8090; CapAlt:17),
(Name:'Jersey'; Fips10:'je'; ISO3166_2:'je'; ISO3166_3:'jey'; CLat: 49.25; CLong: -2.17; Capital:'Saint Helier'; CapLat: 49.1919; CapLong: -2.1071; CapAlt:0),
(Name:'Jordan'; Fips10:'jo'; ISO3166_2:'jo'; ISO3166_3:'jor'; CLat: 31.00; CLong: 36.00; Capital:'Amman'; CapLat: 31.9494; CapLong: 35.9329; CapAlt:759),
(Name:'Kazakhstan'; Fips10:'kz'; ISO3166_2:'kz'; ISO3166_3:'kaz'; CLat: 48.00; CLong: 68.00; Capital:'Astana'; CapLat: 51.1894; CapLong: 71.4321; CapAlt:338),
(Name:'Kenya'; Fips10:'ke'; ISO3166_2:'ke'; ISO3166_3:'ken'; CLat: 1.00; CLong: 38.00; Capital:'Nairobi'; CapLat: -1.2702; CapLong: 36.8041; CapAlt:1728),
(Name:'Kiribati'; Fips10:'kr'; ISO3166_2:'ki'; ISO3166_3:'kir'; CLat: 1.42; CLong: 173.00; Capital:'Tarawa'; CapLat: 1.3260; CapLong: 172.9850; CapAlt:0),
(Name:'Korea, North'; Fips10:'kn'; ISO3166_2:'kp'; ISO3166_3:'prk'; CLat: 40.00; CLong: 127.00; Capital:'Pyongyang'; CapLat: 39.0285; CapLong: 125.7570; CapAlt:6),
(Name:'Korea, South'; Fips10:'ks'; ISO3166_2:'kr'; ISO3166_3:'kor'; CLat: 37.00; CLong: 127.50; Capital:'Seoul'; CapLat: 37.5424; CapLong: 126.9350; CapAlt:33),
(Name:'Kuwait'; Fips10:'ku'; ISO3166_2:'kw'; ISO3166_3:'kwt'; CLat: 29.50; CLong: 45.75; Capital:'Kuwait'; CapLat: 29.3294; CapLong: 48.0039; CapAlt:5),
(Name:'Kyrgyzstan'; Fips10:'kg'; ISO3166_2:'kg'; ISO3166_3:'kgz'; CLat: 41.00; CLong: 75.00; Capital:'Bishkek'; CapLat: 42.8700; CapLong: 74.5879; CapAlt:771),
(Name:'Laos'; Fips10:'la'; ISO3166_2:'la'; ISO3166_3:'lao'; CLat: 18.00; CLong: 105.00; Capital:'Vientiane'; CapLat: 17.9628; CapLong: 102.6140; CapAlt:148),
(Name:'Latvia'; Fips10:'lg'; ISO3166_2:'lv'; ISO3166_3:'lva'; CLat: 57.00; CLong: 25.00; Capital:'Riga'; CapLat: 56.9483; CapLong: 24.0860; CapAlt:8),
(Name:'Lebanon'; Fips10:'le'; ISO3166_2:'lb'; ISO3166_3:'lbn'; CLat: 33.83; CLong: 35.83; Capital:'Beirut'; CapLat: 33.8872; CapLong: 35.5134; CapAlt:55),
(Name:'Lesotho'; Fips10:'lt'; ISO3166_2:'ls'; ISO3166_3:'lso'; CLat:-29.50; CLong: 28.50; Capital:'Maseru'; CapLat:-29.3083; CapLong: 27.4916; CapAlt:1673),
(Name:'Liberia'; Fips10:'li'; ISO3166_2:'lr'; ISO3166_3:'lbr'; CLat: 6.50; CLong: -9.50; Capital:'Monrovia'; CapLat: 6.3008; CapLong: -10.7972; CapAlt:0),
(Name:'Libya'; Fips10:'ly'; ISO3166_2:'ly'; ISO3166_3:'lby'; CLat: 25.00; CLong: 17.00; Capital:'Tripoli'; CapLat: 32.8711; CapLong: 13.1800; CapAlt:6),
(Name:'Liechtenstein'; Fips10:'ls'; ISO3166_2:'li'; ISO3166_3:'lie'; CLat: 47.27; CLong: 9.53; Capital:'Vaduz'; CapLat: 47.1431; CapLong: 9.5215; CapAlt:601),
(Name:'Lithuania'; Fips10:'lh'; ISO3166_2:'lt'; ISO3166_3:'ltu'; CLat: 56.00; CLong: 24.00; Capital:'Vilnius'; CapLat: 54.6886; CapLong: 25.2760; CapAlt:124),
(Name:'Luxembourg'; Fips10:'lu'; ISO3166_2:'lu'; ISO3166_3:'lux'; CLat: 49.75; CLong: 6.17; Capital:'Luxembourg'; CapLat: 49.6084; CapLong: 6.1203; CapAlt:273),
(Name:'Macedonia'; Fips10:'mk'; ISO3166_2:'mk'; ISO3166_3:'mkd'; CLat: 41.83; CLong: 22.00; Capital:'Skopje'; CapLat: 42.0069; CapLong: 21.4467; CapAlt:243),
(Name:'Madagascar'; Fips10:'ma'; ISO3166_2:'mg'; ISO3166_3:'mdg'; CLat:-20.00; CLong: 47.00; Capital:'Antananarivo'; CapLat:-18.9077; CapLong: 47.5277; CapAlt:1288),
(Name:'Malawi'; Fips10:'mi'; ISO3166_2:'mw'; ISO3166_3:'mwi'; CLat:-13.50; CLong: 34.00; Capital:'Lilongwe'; CapLat:-13.9826; CapLong: 33.7738; CapAlt:1024),
(Name:'Malaysia'; Fips10:'my'; ISO3166_2:'my'; ISO3166_3:'mys'; CLat: 2.50; CLong: 112.50; Capital:'Kuala Lumpur'; CapLat: 3.1502; CapLong: 101.7080; CapAlt:60),
(Name:'Maldives'; Fips10:'mv'; ISO3166_2:'mv'; ISO3166_3:'mdv'; CLat: 3.25; CLong: 73.00; Capital:'Male'; CapLat: 4.1667; CapLong: 73.5000; CapAlt:0),
(Name:'Mali'; Fips10:'ml'; ISO3166_2:'ml'; ISO3166_3:'mli'; CLat: 17.00; CLong: -4.00; Capital:'Bamako'; CapLat: 12.6530; CapLong: -7.9865; CapAlt:349),
(Name:'Malta'; Fips10:'mt'; ISO3166_2:'mt'; ISO3166_3:'mlt'; CLat: 35.83; CLong: 14.58; Capital:'Valletta'; CapLat: 35.9042; CapLong: 14.5189; CapAlt:0),
(Name:'Marshall Islands'; Fips10:'rm'; ISO3166_2:'mh'; ISO3166_3:'mhl'; CLat: 9.00; CLong: 168.00; Capital:'Majuro'; CapLat: 7.1000; CapLong: 171.3833; CapAlt:0),
(Name:'Martinique'; Fips10:'mb'; ISO3166_2:'mq'; ISO3166_3:'mtq'; CLat: 14.67; CLong: -61.00; Capital:'Fort-de-France'; CapLat: 14.5997; CapLong: -61.0760; CapAlt:0),
(Name:'Mauritania'; Fips10:'mr'; ISO3166_2:'mr'; ISO3166_3:'mrt'; CLat: 20.00; CLong: -12.00; Capital:'Nouakchott'; CapLat: 18.0841; CapLong: -15.9784; CapAlt:6),
(Name:'Mauritius'; Fips10:'mp'; ISO3166_2:'mu'; ISO3166_3:'mus'; CLat:-20.28; CLong: 57.55; Capital:'Port Louis'; CapLat:-20.1653; CapLong: 57.4964; CapAlt:134),
(Name:'Mayotte'; Fips10:'mf'; ISO3166_2:'yt'; ISO3166_3:'myt'; CLat:-12.83; CLong: 45.17; Capital:'Mamoutzou'; CapLat:-12.7794; CapLong: 45.2126; CapAlt:0),
(Name:'Mexico'; Fips10:'mx'; ISO3166_2:'mx'; ISO3166_3:'mex'; CLat: 23.00; CLong:-102.00; Capital:'Mexico'; CapLat: 19.4271; CapLong: -99.1276; CapAlt:2216),
(Name:'Micronesia'; Fips10:'fm'; ISO3166_2:'fm'; ISO3166_3:'fsm'; CLat: 6.92; CLong: 158.25; Capital:'Palikir'; CapLat: 6.9177; CapLong: 158.1850; CapAlt:207),
(Name:'Moldova'; Fips10:'md'; ISO3166_2:'md'; ISO3166_3:'mda'; CLat: 47.00; CLong: 29.00; Capital:'Chisinau'; CapLat: 47.0269; CapLong: 28.8416; CapAlt:80),
(Name:'Monaco'; Fips10:'mn'; ISO3166_2:'mc'; ISO3166_3:'mco'; CLat: 43.73; CLong: 7.40; Capital:'Monaco'; CapLat: 43.7453; CapLong: 7.4242; CapAlt:0),
(Name:'Mongolia'; Fips10:'mg'; ISO3166_2:'mn'; ISO3166_3:'mng'; CLat: 46.00; CLong: 105.00; Capital:'Ulaanbaatar'; CapLat: 47.9286; CapLong: 106.9120; CapAlt:1284),
(Name:'Montenegro'; Fips10:'mj'; ISO3166_2:'me'; ISO3166_3:'mne'; CLat: 42.50; CLong: 19.30; Capital:'Podgorica'; CapLat: 42.4459; CapLong: 19.2641; CapAlt:61),
(Name:'Montserrat'; Fips10:'mh'; ISO3166_2:'ms'; ISO3166_3:'msr'; CLat: 16.75; CLong: -62.20; Capital:'Plymouth'; CapLat: 16.6802; CapLong: -62.2014; CapAlt:114),
(Name:'Morocco'; Fips10:'mo'; ISO3166_2:'ma'; ISO3166_3:'mar'; CLat: 32.00; CLong: -5.00; Capital:'Rabat'; CapLat: 34.0150; CapLong: -6.8327; CapAlt:53),
(Name:'Mozambique'; Fips10:'mz'; ISO3166_2:'mz'; ISO3166_3:'moz'; CLat:-18.25; CLong: 35.00; Capital:'Maputo'; CapLat:-25.9622; CapLong: 32.5737; CapAlt:63),
(Name:'Namibia'; Fips10:'wa'; ISO3166_2:'na'; ISO3166_3:'nam'; CLat:-22.00; CLong: 17.00; Capital:'Windhoek'; CapLat:-22.5596; CapLong: 17.0770; CapAlt:1721),
(Name:'Nauru'; Fips10:'nr'; ISO3166_2:'nr'; ISO3166_3:'nru'; CLat: -0.53; CLong: 166.92; Capital:'Yaren'; CapLat: -0.5500; CapLong: 166.9167; CapAlt:9),
(Name:'Nepal'; Fips10:'np'; ISO3166_2:'np'; ISO3166_3:'npl'; CLat: 28.00; CLong: 84.00; Capital:'Kathmandu'; CapLat: 27.7120; CapLong: 85.3130; CapAlt:1298),
(Name:'Netherlands'; Fips10:'nl'; ISO3166_2:'nl'; ISO3166_3:'nld'; CLat: 52.50; CLong: 5.75; Capital:'Amsterdam'; CapLat: 52.3730; CapLong: 4.8948; CapAlt:-1),
(Name:'Netherlands Antilles'; Fips10:'nt'; ISO3166_2:'an'; ISO3166_3:'ant'; CLat: 12.25; CLong: -68.75; Capital:'Willemstad'; CapLat: 12.0997; CapLong: -68.9359; CapAlt:0),
(Name:'New Caledonia'; Fips10:'nc'; ISO3166_2:'nc'; ISO3166_3:'ncl'; CLat:-21.50; CLong: 165.50; Capital:'Noumea'; CapLat:-22.2999; CapLong: 166.4380; CapAlt:0),
(Name:'New Zealand'; Fips10:'nz'; ISO3166_2:'nz'; ISO3166_3:'nzl'; CLat:-41.00; CLong: 174.00; Capital:'Wellington'; CapLat:-41.3348; CapLong: 174.8070; CapAlt:20),
(Name:'Nicaragua'; Fips10:'nu'; ISO3166_2:'ni'; ISO3166_3:'nic'; CLat: 13.00; CLong: -85.00; Capital:'Managua'; CapLat: 12.1515; CapLong: -86.2730; CapAlt:75),
(Name:'Niger'; Fips10:'ng'; ISO3166_2:'ne'; ISO3166_3:'ner'; CLat: 16.00; CLong: 8.00; Capital:'Niamey'; CapLat: 13.5142; CapLong: 2.1204; CapAlt:207),
(Name:'Nigeria'; Fips10:'ni'; ISO3166_2:'ng'; ISO3166_3:'nga'; CLat: 10.00; CLong: 8.00; Capital:'Abuja'; CapLat: 9.0833; CapLong: 7.5333; CapAlt:777),
(Name:'Niue'; Fips10:'ne'; ISO3166_2:'nu'; ISO3166_3:'niu'; CLat:-19.03; CLong:-169.87; Capital:'Alofi'; CapLat:-19.0565; CapLong:-169.9240; CapAlt:6),
(Name:'Norfolk Island'; Fips10:'nf'; ISO3166_2:'nf'; ISO3166_3:'nfk'; CLat:-29.03; CLong: 167.95; Capital:'Kingston'; CapLat:-29.0427; CapLong: 168.0650; CapAlt:0),
(Name:'Northern Mariana Islands'; Fips10:'cq'; ISO3166_2:'mp'; ISO3166_3:'mnp'; CLat: 15.20; CLong: 145.75; Capital:'Saipan'; CapLat: 15.2069; CapLong: 145.7200; CapAlt:132),
(Name:'Norway'; Fips10:'no'; ISO3166_2:'no'; ISO3166_3:'nor'; CLat: 62.00; CLong: 10.00; Capital:'Oslo'; CapLat: 59.9379; CapLong: 10.7123; CapAlt:12),
(Name:'Oman'; Fips10:'mu'; ISO3166_2:'om'; ISO3166_3:'omn'; CLat: 21.00; CLong: 57.00; Capital:'Muscat'; CapLat: 23.6065; CapLong: 58.5881; CapAlt:68),
(Name:'Pakistan'; Fips10:'pk'; ISO3166_2:'pk'; ISO3166_3:'pak'; CLat: 30.00; CLong: 70.00; Capital:'Islamabad'; CapLat: 33.7182; CapLong: 73.0605; CapAlt:507),
(Name:'Palau'; Fips10:'ps'; ISO3166_2:'pw'; ISO3166_3:'plw'; CLat: 7.50; CLong: 134.50; Capital:'Melekeok'; CapLat: 7.4933; CapLong: 134.6342; CapAlt:0),
(Name:'Panama'; Fips10:'pm'; ISO3166_2:'pa'; ISO3166_3:'pan'; CLat: 9.00; CLong: -80.00; Capital:'Panama'; CapLat: 9.0029; CapLong: -79.5172; CapAlt:0),
(Name:'Papua New Guinea'; Fips10:'pp'; ISO3166_2:'pg'; ISO3166_3:'png'; CLat: -6.00; CLong: 147.00; Capital:'Port Moresby'; CapLat: -9.4818; CapLong: 147.1840; CapAlt:39),
(Name:'Paraguay'; Fips10:'pa'; ISO3166_2:'py'; ISO3166_3:'pry'; CLat:-23.00; CLong: -58.00; Capital:'Adamstown'; CapLat:-25.3051; CapLong: -57.6219; CapAlt:54),
(Name:'Peru'; Fips10:'pe'; ISO3166_2:'pe'; ISO3166_3:'per'; CLat:-10.00; CLong: -76.00; Capital:'Lima'; CapLat:-12.0824; CapLong: -77.0454; CapAlt:107),
(Name:'Philippines'; Fips10:'rp'; ISO3166_2:'ph'; ISO3166_3:'phl'; CLat: 13.00; CLong: 122.00; Capital:'Manila'; CapLat: 14.6096; CapLong: 121.0060; CapAlt:7),
(Name:'Poland'; Fips10:'pl'; ISO3166_2:'pl'; ISO3166_3:'pol'; CLat: 52.00; CLong: 20.00; Capital:'Warsaw'; CapLat: 52.2449; CapLong: 21.0119; CapAlt:93),
(Name:'Portugal'; Fips10:'po'; ISO3166_2:'pt'; ISO3166_3:'prt'; CLat: 39.50; CLong: -8.00; Capital:'Lisbon'; CapLat: 38.7559; CapLong: -9.1228; CapAlt:15),
(Name:'Puerto Rico'; Fips10:'rq'; ISO3166_2:'pr'; ISO3166_3:'pri'; CLat: 18.25; CLong: -66.50; Capital:'San Juan'; CapLat: 18.3988; CapLong: -66.0685; CapAlt:3),
(Name:'Qatar'; Fips10:'qa'; ISO3166_2:'qa'; ISO3166_3:'qat'; CLat: 25.50; CLong: 51.25; Capital:'Doha'; CapLat: 25.2951; CapLong: 51.5074; CapAlt:13),
(Name:'Reunion'; Fips10:'re'; ISO3166_2:'re'; ISO3166_3:'reu'; CLat:-21.10; CLong: 55.60; Capital:'Saint-Denis'; CapLat:-20.8672; CapLong: 55.4568; CapAlt:112),
(Name:'Romania'; Fips10:'ro'; ISO3166_2:'ro'; ISO3166_3:'rou'; CLat: 46.00; CLong: 25.00; Capital:'Bucharest'; CapLat: 44.4305; CapLong: 26.1230; CapAlt:70),
(Name:'Russia'; Fips10:'rs'; ISO3166_2:'ru'; ISO3166_3:'rus'; CLat: 60.00; CLong: 100.00; Capital:'Moscow'; CapLat: 55.7388; CapLong: 37.6665; CapAlt:124),
(Name:'Rwanda'; Fips10:'rw'; ISO3166_2:'rw'; ISO3166_3:'rwa'; CLat: -2.00; CLong: 30.00; Capital:'Kigali'; CapLat: -1.9501; CapLong: 30.0588; CapAlt:1567),
(Name:'Saint Helena'; Fips10:'sh'; ISO3166_2:'sh'; ISO3166_3:'shn'; CLat:-15.93; CLong: -5.70; Capital:'Jamestown'; CapLat:-15.9221; CapLong: -5.7047; CapAlt:292),
(Name:'Saint Kitts and Nevis'; Fips10:'sc'; ISO3166_2:'kn'; ISO3166_3:'kna'; CLat: 17.33; CLong: -62.75; Capital:'Basseterre'; CapLat: 17.3000; CapLong: -62.7309; CapAlt:0),
(Name:'Saint Lucia'; Fips10:'st'; ISO3166_2:'lc'; ISO3166_3:'lca'; CLat: 13.88; CLong: -60.98; Capital:'Castries'; CapLat: 14.0001; CapLong: -60.9832; CapAlt:204),
(Name:'Saint Pierre and Miquelon'; Fips10:'sb'; ISO3166_2:'pm'; ISO3166_3:'spm'; CLat: 46.83; CLong: -56.33; Capital:'Saint-Pierre'; CapLat: 46.7862; CapLong: -56.1939; CapAlt:0),
(Name:'Saint Vincent and the Grenadines'; Fips10:'vc'; ISO3166_2:'vc'; ISO3166_3:'vct'; CLat: 13.25; CLong: -61.20; Capital:'Kingstown'; CapLat: 13.2035; CapLong: -61.2653; CapAlt:0),
(Name:'Samoa'; Fips10:'ws'; ISO3166_2:'ws'; ISO3166_3:'wsm'; CLat:-13.58; CLong:-172.33; Capital:'Apia'; CapLat:-13.8314; CapLong:-171.7520; CapAlt:0),
(Name:'San Marino'; Fips10:'sm'; ISO3166_2:'sm'; ISO3166_3:'smr'; CLat: 43.77; CLong: 12.42; Capital:'San Marino'; CapLat: 43.9424; CapLong: 12.4454; CapAlt:328),
(Name:'Sao Tome and Principe'; Fips10:'tp'; ISO3166_2:'st'; ISO3166_3:'stp'; CLat: 1.00; CLong: 7.00; Capital:'Sao Tome'; CapLat: 0.3368; CapLong: 6.7278; CapAlt:141),
(Name:'Saudi Arabia'; Fips10:'sa'; ISO3166_2:'sa'; ISO3166_3:'sau'; CLat: 25.00; CLong: 45.00; Capital:'Riyadh'; CapLat: 24.6347; CapLong: 46.7179; CapAlt:624),
(Name:'Senegal'; Fips10:'sg'; ISO3166_2:'sn'; ISO3166_3:'sen'; CLat: 14.00; CLong: -14.00; Capital:'Dakar'; CapLat: 14.6867; CapLong: -17.4519; CapAlt:37),
(Name:'Serbia and Montenegro'; Fips10:'yi'; ISO3166_2:'rs'; ISO3166_3:'srb'; CLat: 44.00; CLong: 21.00; Capital:'Belgrade'; CapLat: 44.8024; CapLong: 20.4656; CapAlt:116),
(Name:'Seychelles'; Fips10:'se'; ISO3166_2:'sc'; ISO3166_3:'syc'; CLat: -4.58; CLong: 55.67; Capital:'Victoria'; CapLat: -4.6174; CapLong: 55.4450; CapAlt:0),
(Name:'Sierra Leone'; Fips10:'sl'; ISO3166_2:'sl'; ISO3166_3:'sle'; CLat: 8.50; CLong: -11.50; Capital:'Freetown'; CapLat: 8.4861; CapLong: -13.2391; CapAlt:76),
(Name:'Singapore'; Fips10:'sn'; ISO3166_2:'sg'; ISO3166_3:'sgp'; CLat: 1.37; CLong: 103.80; Capital:'Singapore'; CapLat: 1.2988; CapLong: 103.8250; CapAlt:0),
(Name:'Slovakia'; Fips10:'lo'; ISO3166_2:'sk'; ISO3166_3:'svk'; CLat: 48.66; CLong: 19.50; Capital:'Bratislava'; CapLat: 48.1531; CapLong: 17.1297; CapAlt:131),
(Name:'Slovenia'; Fips10:'si'; ISO3166_2:'si'; ISO3166_3:'svn'; CLat: 46.12; CLong: 14.83; Capital:'Ljubljana'; CapLat: 46.0574; CapLong: 14.5148; CapAlt:281),
(Name:'Solomon Islands'; Fips10:'bp'; ISO3166_2:'sb'; ISO3166_3:'slb'; CLat: -8.00; CLong: 159.00; Capital:'Honiara'; CapLat: -9.4268; CapLong: 159.9490; CapAlt:29),
(Name:'Somalia'; Fips10:'so'; ISO3166_2:'so'; ISO3166_3:'som'; CLat: 10.00; CLong: 49.00; Capital:'Mogadishu'; CapLat: 2.0412; CapLong: 45.3441; CapAlt:28),
(Name:'South Africa'; Fips10:'sf'; ISO3166_2:'za'; ISO3166_3:'zaf'; CLat:-29.00; CLong: 24.00; Capital:'Pretoria'; CapLat:-25.7313; CapLong: 28.2184; CapAlt:1271),
(Name:'Spain'; Fips10:'sp'; ISO3166_2:'es'; ISO3166_3:'esp'; CLat: 40.00; CLong: -4.00; Capital:'Madrid'; CapLat: 40.4422; CapLong: -3.6910; CapAlt:588),
(Name:'Sri Lanka'; Fips10:'ce'; ISO3166_2:'lk'; ISO3166_3:'lka'; CLat: 7.00; CLong: 81.00; Capital:'Colombo'; CapLat: 6.9275; CapLong: 79.8484; CapAlt:4),
(Name:'Sudan'; Fips10:'su'; ISO3166_2:'sd'; ISO3166_3:'sdn'; CLat: 15.00; CLong: 30.00; Capital:'Khartoum'; CapLat: 15.5501; CapLong: 32.5322; CapAlt:377),
(Name:'Suriname'; Fips10:'ns'; ISO3166_2:'sr'; ISO3166_3:'sur'; CLat: 4.00; CLong: -56.00; Capital:'Paramaribo'; CapLat: 5.8261; CapLong: -55.1703; CapAlt:1),
(Name:'Svalbard'; Fips10:'sv'; ISO3166_2:'sj'; ISO3166_3:'sjm'; CLat: 78.00; CLong: 20.00; Capital:'Longyearbyen'; CapLat: 78.2186; CapLong: 15.6488; CapAlt:199),
(Name:'Swaziland'; Fips10:'wz'; ISO3166_2:'sz'; ISO3166_3:'swz'; CLat:-26.50; CLong: 31.50; Capital:'Mbabane'; CapLat:-26.3187; CapLong: 31.1437; CapAlt:1243),
(Name:'Sweden'; Fips10:'sw'; ISO3166_2:'se'; ISO3166_3:'swe'; CLat: 62.00; CLong: 15.00; Capital:'Stockholm'; CapLat: 59.3323; CapLong: 18.0651; CapAlt:15),
(Name:'Switzerland'; Fips10:'sz'; ISO3166_2:'ch'; ISO3166_3:'che'; CLat: 47.00; CLong: 8.00; Capital:'Bern'; CapLat: 46.9482; CapLong: 7.4457; CapAlt:513),
(Name:'Syria'; Fips10:'sy'; ISO3166_2:'sy'; ISO3166_3:'syr'; CLat: 35.00; CLong: 38.00; Capital:'Damascus'; CapLat: 33.5193; CapLong: 36.3135; CapAlt:691),
(Name:'Taiwan'; Fips10:'tw'; ISO3166_2:'tw'; ISO3166_3:'twn'; CLat: 23.50; CLong: 121.00; Capital:'Taipei'; CapLat: 25.0351; CapLong: 121.5070; CapAlt:5),
(Name:'Tajikistan'; Fips10:'ti'; ISO3166_2:'tj'; ISO3166_3:'tjk'; CLat: 39.00; CLong: 71.00; Capital:'Dushanbe'; CapLat: 38.5593; CapLong: 68.7750; CapAlt:789),
(Name:'Tanzania'; Fips10:'tz'; ISO3166_2:'tz'; ISO3166_3:'tza'; CLat: -6.00; CLong: 35.00; Capital:'Dodoma'; CapLat: -6.1749; CapLong: 35.7382; CapAlt:1148),
(Name:'Thailand'; Fips10:'th'; ISO3166_2:'th'; ISO3166_3:'tha'; CLat: 15.00; CLong: 100.00; Capital:'Bangkok'; CapLat: 13.7308; CapLong: 100.5210; CapAlt:1),
(Name:'Togo'; Fips10:'to'; ISO3166_2:'tg'; ISO3166_3:'tgo'; CLat: 8.00; CLong: 1.17; Capital:'Lome'; CapLat: 6.1266; CapLong: 1.2278; CapAlt:63),
(Name:'Tonga'; Fips10:'tn'; ISO3166_2:'to'; ISO3166_3:'ton'; CLat:-20.00; CLong:-175.00; Capital:'Nuku''alofa'; CapLat:-21.1360; CapLong:-175.2160; CapAlt:0),
(Name:'Trinidad and Tobago'; Fips10:'td'; ISO3166_2:'tt'; ISO3166_3:'tto'; CLat: 11.00; CLong: -61.00; Capital:'Port-of-Spain'; CapLat: 10.6572; CapLong: -61.4836; CapAlt:0),
(Name:'Tunisia'; Fips10:'ts'; ISO3166_2:'tn'; ISO3166_3:'tun'; CLat: 34.00; CLong: 9.00; Capital:'Tunis'; CapLat: 36.8188; CapLong: 10.1660; CapAlt:0),
(Name:'Turkey'; Fips10:'tu'; ISO3166_2:'tr'; ISO3166_3:'tur'; CLat: 39.00; CLong: 35.00; Capital:'Ankara'; CapLat: 39.9293; CapLong: 32.8533; CapAlt:938),
(Name:'Turkmenistan'; Fips10:'tx'; ISO3166_2:'tm'; ISO3166_3:'tkm'; CLat: 40.00; CLong: 60.00; Capital:'Ashgabat'; CapLat: 37.9504; CapLong: 58.3901; CapAlt:215),
(Name:'Turks and Caicos Islands'; Fips10:'tk'; ISO3166_2:'tc'; ISO3166_3:'tca'; CLat: 21.75; CLong: -71.58; Capital:'Cockburn Town'; CapLat: 21.4608; CapLong: -71.1363; CapAlt:0),
(Name:'Tuvalu'; Fips10:'tv'; ISO3166_2:'tv'; ISO3166_3:'tuv'; CLat: -8.00; CLong: 178.00; Capital:'Vaiaku'; CapLat: -8.5167; CapLong: 179.2167; CapAlt:0),
(Name:'Uganda'; Fips10:'ug'; ISO3166_2:'ug'; ISO3166_3:'uga'; CLat: 1.00; CLong: 32.00; Capital:'Kampala'; CapLat: 0.3228; CapLong: 32.5748; CapAlt:1202),
(Name:'Ukraine'; Fips10:'up'; ISO3166_2:'ua'; ISO3166_3:'ukr'; CLat: 49.00; CLong: 32.00; Capital:'Kiev'; CapLat: 50.4482; CapLong: 30.5021; CapAlt:168),
(Name:'United Arab Emirates'; Fips10:'ae'; ISO3166_2:'ae'; ISO3166_3:'are'; CLat: 24.00; CLong: 54.00; Capital:'Abu Dhabi'; CapLat: 24.4764; CapLong: 54.3705; CapAlt:13),
(Name:'United Kingdom'; Fips10:'uk'; ISO3166_2:'gb'; ISO3166_3:'gbr'; CLat: 54.00; CLong: -2.00; Capital:'London'; CapLat: 51.5275; CapLong: -0.1190; CapAlt:14),
(Name:'United States'; Fips10:'us'; ISO3166_2:'us'; ISO3166_3:'usa'; CLat: 38.00; CLong: -97.00; Capital:'Washington, DC'; CapLat: 38.9051; CapLong: -77.0162; CapAlt:2),
(Name:'Uruguay'; Fips10:'uy'; ISO3166_2:'uy'; ISO3166_3:'ury'; CLat:-33.00; CLong: -56.00; Capital:'Montevideo'; CapLat:-34.8941; CapLong: -56.0675; CapAlt:43),
(Name:'Uzbekistan'; Fips10:'uz'; ISO3166_2:'uz'; ISO3166_3:'uzb'; CLat: 41.00; CLong: 64.00; Capital:'Tashkent'; CapLat: 41.3052; CapLong: 69.2690; CapAlt:459),
(Name:'Vanuatu'; Fips10:'nh'; ISO3166_2:'vu'; ISO3166_3:'vut'; CLat:-16.00; CLong: 167.00; Capital:'Port-Vila'; CapLat:-17.7404; CapLong: 168.3210; CapAlt:0),
(Name:'Vatican'; Fips10:'vt'; ISO3166_2:'va'; ISO3166_3:'vat'; CLat: 41.90; CLong: 12.45; Capital:'Vatican City'; CapLat: 41.9017; CapLong: 12.4577; CapAlt:14),
(Name:'Venezuela'; Fips10:'ve'; ISO3166_2:'ve'; ISO3166_3:'ven'; CLat: 8.00; CLong: -66.00; Capital:'Caracas'; CapLat: 10.4961; CapLong: -66.8983; CapAlt:909),
(Name:'Vietnam'; Fips10:'vm'; ISO3166_2:'vn'; ISO3166_3:'vnm'; CLat: 16.00; CLong: 106.00; Capital:'Hanoi'; CapLat: 21.0319; CapLong: 105.8200; CapAlt:25),
(Name:'Virgin Islands'; Fips10:'vq'; ISO3166_2:'vi'; ISO3166_3:'vir'; CLat: 18.33; CLong: -64.83; Capital:'Charlotte Amalie'; CapLat: 18.3496; CapLong: -64.9342; CapAlt:0),
(Name:'Wallis and Futuna'; Fips10:'wf'; ISO3166_2:'wf'; ISO3166_3:'wlf'; CLat:-13.30; CLong:-176.20; Capital:'Mata-Utu'; CapLat:-13.2784; CapLong:-176.1430; CapAlt:0),
(Name:'Western Sahara'; Fips10:'wi'; ISO3166_2:'eh'; ISO3166_3:'esh'; CLat: 24.50; CLong: -13.00; Capital:'Laayoune'; CapLat: 27.1623; CapLong: -13.2016; CapAlt:72),
(Name:'Yemen'; Fips10:'ym'; ISO3166_2:'ye'; ISO3166_3:'yem'; CLat: 15.00; CLong: 48.00; Capital:'Sanaa'; CapLat: 15.3614; CapLong: 44.2095; CapAlt:2253),
(Name:'Zambia'; Fips10:'za'; ISO3166_2:'zm'; ISO3166_3:'zmb'; CLat:-15.00; CLong: 30.00; Capital:'Lusaka'; CapLat:-15.4088; CapLong: 28.2824; CapAlt:1270),
(Name:'Zimbabwe'; Fips10:'zi'; ISO3166_2:'zw'; ISO3166_3:'zwe'; CLat:-20.00; CLong: 30.00; Capital:'Harare'; CapLat:-17.8292; CapLong: 31.0540; CapAlt:1480));
type
TSymbolProperties = record
Kind : TLandMarkElement; // type of symbol
Size : integer; // size of symbol
FGColor : TColor; // foreground color
BGColor : TColor; // background color
Transparent : boolean; // transparency
Direction : integer; // direction of symbol
// (arrows and triangles)
Length : integer; // length of symbol
// (arrows only)
end;
TLandMark = record
Latitude : double;
Longitude : double;
Height : double;
ClassFlag : byte;
Tag : longint;
SymbolProps: TSymbolProperties;
Identifier : TLMIdentifier;
Time : TDateTime;
end;
TSymbol = record
Properties : TSymbolProperties;
Name : string[40]; // name of symbol
Category : integer; // category of symbol
end;
TCalibModel = (cmParabolicIp, cmBiquadraticPn, cmConicConformal,
cmMillerCylindrical);
TCalQuad = record
Latitude : double;
Longitude : double;
MapX : integer;
MapY : integer;
end;
TCalibLine = record
LineType : TGratLineKind;
LineValue : double;
NumPoints : integer;
CalPoints : array[1..MAXCALPOINTS] of TPoint;
end;
TCalibData = record
MapFName : string;
Caption : string;
Corners : TCornerArray;
Resolution : double; { meter/pixel }
NumCalLines : integer;
CalLines : array[1..MAXCALLINES] of TCalibLine;
NumCalQuads : integer;
CalQuads : array[1..MAXCALQUADS] of TCalQuad;
end;
TZoomPanEvent = procedure (Sender: TObject) of object;
TRenderEvent = procedure (Sender: TObject; const Canvas: TCanvas) of object;
TOnRubberBandActionEvent = procedure (Sender: TObject; APoint: TPoint) of object;
TDrawLandMarkEvent = procedure (Sender: TObject; var Handled: boolean;
const Canvas: TCanvas; APoint: TPoint;
const LandMarkData: TLandMark) of object;
TLandMarkActionEvent = procedure (Sender: TObject; var Allowed: boolean;
const Action: TLandMarkAction;
const LandMarkData: TLandMark) of object;
TMapImgRequestEvent = procedure (Sender: TObject; var FileName: string) of object;
TSymbolRepository = class (TComponent)
private
FSymbols : array of TSymbol;
FSymbolsBak : array of TSymbol;
FNEntries : integer;
FNEntriesBak : integer;
function GetValues (ix: integer): TSymbol;
procedure SetValues (ix: integer; v: TSymbol);
procedure SetNEntries (value: integer);
protected
procedure AssignTo (Dest: TPersistent); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
procedure Backup;
procedure Clear;
function LoadFromFile (FName, DataID: string): boolean;
function ReadFromOpenXMLFile (var InFile: TextFile;
DataID: string): boolean;
procedure Restore;
procedure StoreOnFile (FName, DataID: string);
property Symbols[ix: integer]: TSymbol
read GetValues write SetValues; default;
published
property NumEntries: integer read FNEntries write SetNEntries;
end;
TGeoMap = class(TCustomControl) // TGraphicControl
private
AuxBmp : TBitmap; { double buffer bitmap }
FImgCache : TBitMap;{ image cache for magnifications < 0.5 }
FCacheMag : double;
FCacheAA : boolean;
FCacheMagLimit : double;{ limit where caching is switched on }
FNumLandMarks : integer; { number of landmarks }
FLandMarks : array of TLandmark;{ collection of landmarks }
FDefaultLM : TLandMark; { default landmark }
FColorBakGnd : TColor;
FFrameStyle : TFrameStyle; { style of frame }
FFrameColor : TColor;
FColorGratLine : TColor; // color of graticule lines
FColorGratPoints : TColor; // color of calibration points
FColBlackLine : TColor; { colors to draw the frame }
FColGrayLine : TColor; { -"- }
FColWhiteLine : TColor; { -"- }
FEmptyMsg : string; { message if no map image available }
FLButtonWasDown : boolean;{ global identifier to track panning
by left mouse button }
FLMClassVisible : array[0..255] of boolean;// visib. of landmarks
FLMRandSampleLimit : longint;
FMapImgName : string; // name of map image loaded
FMapImgWidth : integer;
FMapImgHeight : integer;
FMagnify : double; // visual scale of map
FZoomState : TZoomState;
FMouseBoxState : TMouseBoxState;
FMouseBoxX1 : integer;
FMouseBoxX2 : integer;
FMouseBoxY1 : integer;
FMouseBoxY2 : integer;
FWindOldCornerX : integer;
FWindOldCornerY : integer;
FWindAnchorX : integer;
FWindAnchorY : integer;
FShowGrat : TShowGrat;
FTopLeft : TPoint;
FCalibModel : TCalibModel;
FBiQuadOops : TCalQuad; // container for last deleted
// calibration point
// (biquadratic polynomial)
FParaIpOops : TCalibLine; // container for last deleted
// calibration point
// (parabolic interpolation)
FRestoreBiQuadOK : boolean;
FRestoreParaIpOK : boolean;
FSuppressPaint : boolean;
FConfinePan : boolean;
FMouseAction : TMouseActMode;{type of allowed mouse action }
FRubberBandOn : boolean;
FRubberBAnchorX : integer;
FRubberBAnchorY : integer;
FRubberBandOldX : integer;
FRubberBandOldY : integer;
FAntiAlias : boolean;
FGratLineDist : double;
FCalibData : TCalibData; // original calibration data for
// interpolated polynomials
FGratMat : TMatrix; // equations of parallels and meridians
// biquadratic calibration
FCalParsSPPL : array[1..2,1..6] of double;
{ calibration from sphere coords to map plane
first index: 1 .... calibration for x
2 .... calibration for y
second index: a1..a6 of follow. calib. equation
pixel(x or y) := a1 + a2*Lat + a3*Long + a4*Lat*Lat +
a5*Lat*Long + a6*Long*Long }
FCalParsPLSP : array[1..2,1..6] of double;
{ calibration from map plane to sphere coords
first index: 1 .... calibration for latitude
2 .... calibration for longitude
second index: a1..a6 of follow. calib. equation
Angle (latitude or longitude) := a1 + a2*x + a3*y +
a4*x*x + a5*x*y + a6*y*y }
// Miller cylindrical calibration
FMillercylPar : array[1..2, 1..2] of double;
{ first index: 1... calibration of latitude (Ry, dy)
2... calibration of longitude (Rx, dx)
x = Par[2,1]*Long + Par[2,2]
y = Par[1,1]*ln(tan(Pi/4+0.4*Lat)) + Par[1,2] }
// conic conformal calibration
FConicPars : array[1..6] of double;
{ index 1: circle center x
2: circle center y
3: k - Latitude
4: d - Latitude
5: k - Longitude
6: d - Longitude
Lat = FConicPars[3]*sqrt(sqr(x-FConicPars[1]) +
sqr(y-FConicPars[2])) + FConicPars[4]
Long = FConicPars[5]*atan((x-FConicPars[1])/
(y-FConicPars[2])) + FConicPars[6]
}
FHighLM : integer;
FHighLMColFG : TColor;
FHighLMColBG : TColor;
FHighLMTrans : boolean;
FTopLeftXAnchor : integer;
FTopLeftYAnchor : integer;
FOnDataLoading : TProgressEvent;
FOnDataRendered : TRenderEvent;
FOnDrawLandmark : TDrawLandmarkEvent;
FOnMapImgRequest : TMapImgRequestEvent;
FOnLMAction : TLandMarkActionEvent;
FOnZoomPan : TZoomPanEvent;
FOnBeginRubberBand : TOnRubberBandActionEvent;
FOnContRubberBand : TOnRubberBandActionEvent;
FOnEndRubberBand : TOnRubberBandActionEvent;
FZoomStack : array[1..MAXGMZOOMSTACK] of TgmZoomStackEntry;
FZStackPoi : integer;
FCalDatName : string;
MouseAnchorX : integer; { anchor for relative mouse move }
MouseAnchorY : integer;
FLastMClickPosX : integer; { position of last mouse click }
FLastMClickPosY : integer;
GrafBmp : TBitmap; { off-screen graphics bitmap }
procedure ConstructInternalMapImg;
function GetLastMClickLatitude: double;
function GetLastMClickLongitude: double;
function GetClassVisibility (i: byte): boolean;
function GetLandMarkData (i: integer): TLandMark;
procedure SetLandMarkData (i: integer; LandMark: TLandMark);
function GetZoomStackEntry (StackIx: integer): TgmZoomStackEntry;
function GetAllowPan: boolean;
procedure SetAllowPan (value: boolean);
procedure SetAntiAlias (value: boolean);
procedure SetClassVisibility (i: byte; value: boolean);
procedure SetFrameStyle (value: TFrameStyle);
procedure SetMapImgName (fname: string);
procedure SetEmptyMsg (Msg: string);
procedure SetColorBakGnd (color: TColor);
procedure SetColorFrame (color: TColor);
procedure SetColorGratLine (color: TColor);
procedure SetColorGratPoints (color: TColor);
procedure SetCalDatName (fname: string);
procedure SetGratLineDist (value: double);
procedure SetShowGrat (mode: TShowGrat);
procedure SetSuppressPaint (value: boolean);
procedure SetRandSampleLimit (value: longint);
procedure SetTopLeft (TL: TPoint);
procedure SetMagnification (Scl: double);
procedure SetMapBitMap (value: TBitMap);
procedure SetHighLM (value: integer);
procedure SetCalibModel (value: TCalibModel);
procedure SetConfinePan (value: boolean);
procedure SetCacheMagLimit (value: double);
procedure ZoomStateOnStack;
function ReadCalDataIntern (SrcIsFile: boolean;
const InFile: TextFile; InStream: TStream;
DataID: string): boolean;
protected
procedure MouseMove (Shift: TShiftState; X,Y: integer); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseUp (Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure DoZoomPanEvent;
procedure Paint; override;
function RecalcGratMat: boolean;
procedure CalcBiquadraticCalibration;
procedure CalcMillerCylCalibration;
procedure CalcConicCalibration;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function AddCalibPoint (GratLineKind: TGratLineKind;
LineValue: double; PixPosX,
PixPosY: integer): boolean; overload;
function AddCalibPoint (Latit, Longit: double; PixPosX,
PixPosY: integer): boolean; overload;
{$IFDEF GE_LEV4}
procedure AddLandMark (Lat, Long, Height: double;
Element: TLandMarkElement; ClassFlag: byte;
Identifier: TLMIdentifier; Time: TDateTime; Tag: longint;
ColorFG, ColorBG: TColor; Size: integer;
Transparent: boolean; Direction,
Length: integer); overload;
procedure AddLandMark (Lat, Long, Height: double;
Identifier: TLMIdentifier;
Time: TDateTime); {$IFDEF GE_LEV4} overload; {$ENDIF}
{$ENDIF}
procedure AddLandMark (Lat, Long, Height: double);
{$IFDEF GE_LEV4} overload; {$ENDIF}
procedure ZoomFitPage;
procedure BringLocationToCenter (Latitude, Longitude: double);
procedure BringMapPixelToCenter (APoint: TPoint);
procedure CalcExtentsAndResolution;
procedure CalcExtentsOfPrint (MapWindow: TRect; Scale: integer;
var Width, Height: integer);
function CalcLatitude (x, y: integer;
var valid: boolean): double; overload;
function CalcLatitude (APoint: TPoint;
var valid: boolean): double; overload;
function CalcLongitude (x, y: integer;
var valid: boolean): double; overload;
function CalcLongitude (APoint: TPoint;
var valid: boolean): double; overload;
function CalcPixelCoords (Lat, Long: double;
var x,y: integer): boolean;
property CalibData: TCalibData read FCalibData write FCalibData;
property CalibDataFile: string read FCalDatName write SetCalDatName;
procedure CalibQuality (var QualX, QualY: double);
procedure Clear;
procedure ClearCalibData;
procedure ClearZoomHistory;
procedure CopyEntireMapToClipboard;
procedure CopyToBMP (DestBmp: TBitMap; TopLeft: TPoint; MagFact: double;
PosHoriz, PosVert, Width, Height: integer);
procedure CopyToClipboard;
procedure CreateAndLoadEmptyMap (FName: string; LatLow, LongLow,
LatHigh, LongHigh, dLat, dLong: double; Wid, Hgt: integer;
OnDrawMapData: TOnDrawMapDataEvent);
function ControlToMapImage (const APoint: TPoint): TPoint;
property HighLightLandMark: integer read FHighLM write SetHighLM;
procedure CopyToOpenPrinter (var x,y: integer;
ScaleF: double); overload;
procedure CopyToOpenPrinter (MapWindow: TRect; Scale: integer;
PosHoriz, PosVert: integer); overload;
procedure CopyToOpenPrinter (TopLeft: TPoint; Scale: integer;
PosHoriz, PosVert, Width, Height: integer); overload;
function FindLandMark (Lat, Long: double; ClassFlag: integer): integer;
function IsPositionWithinMap (Latit, Longit: double): boolean;
property LandMarkData[i: integer]: TLandMark
read GetLandmarkdata write SetLandmarkData;
property LandMarkDefault: TLandMark read FDefaultLM write FDefaultLM;
property LastClickLatitude: double read GetLastMClickLatitude;
property LastClickLongitude: double read GetLastMClickLongitude;
property LastClickPosX: integer read FLastMClickPosX;
property LastClickPosY: integer read FLastMClickPosY;
property LMClassVisible[i:byte]: boolean
read getClassVisibility write SetClassVisibility;
property LMRandomDisplayThreshold: longint
read FLMRandSampleLimit write SetRandSampleLimit;
function LoadCalDataFromXML (FName: string;
DataID: string): boolean; overload;
function LoadCalDataFromXML (InStream: TMemoryStream;
DataID: string): boolean; overload;
function LoadLandMarks (FName: string; DataID: string): boolean;
property Magnification: double read FMagnify write SetMagnification;
function MapImageToControl (const APoint: TPoint): TPoint;
property MapImgFile: string read FMapImgName write SetMapImgName;
property MapImgHeight: integer read FMapImgHeight;
property MapImgWidth: integer read FMapImgWidth;
property MapBitmap: TBitMap read GrafBmp write SetMapBitMap;
function MouseBox (var xLo, yLo, xHi, yHi: integer): boolean;
procedure MouseBoxAbort;
property NumLandMarks: integer read FNumLandMarks;
procedure PanMapToFillWindow;
procedure PrintIt (ScaleF: double);
function ReadCalDataFromOpenXMLFile (var InFile: TextFile;
DataID: string): boolean;
function ReadLandMarksFromOpenXMLFile (var InFile: TextFile;
DataID: string): boolean;
procedure RecalcCalibration;
procedure RemoveAllLandMarks; overload;
procedure RemoveAllLandMarks (ClassFlag: byte); overload;
function RemoveCalibPoint (PixPosX, PixPosY: integer): boolean;
{$IFDEF GE_LEV4} overload; {$ENDIF}
{$IFDEF GE_LEV4}
function RemoveCalibPoint (GratLineKind: TGratLineKind;
LineValue: double; PixPosX,
PixPosY: integer): boolean; overload;
function RemoveLandMark (Lat, Long: double; ClassFlag: integer;
Radius: double): integer; overload;
function RemoveLandMark (Rect: TRectDouble;
ClassFlag: integer): integer; overload;
{$ENDIF}
function RemoveLandMark (Lat, Long: double;
ClassFlag: integer): integer;
{$IFDEF GE_LEV4} overload; {$ENDIF}
procedure RemoveLastLandMark;
function RenameMapImg (Name: string): boolean;
procedure SaveCalDataAsXML (FileName, DataID: string); overload;
procedure SaveCalDataAsXML (OutStream: TStream;
DataID: string); overload;
procedure SaveLandmarks (FileName, DataID: string);
procedure SetHighLightProperties (ColorFG, ColorBG: TColor;
Transparent: boolean);
property SuppressPaint: boolean
read FSuppressPaint write SetSuppressPaint;
property TopLeft: TPoint read FTopLeft write SetTopLeft;
procedure WriteCalDataToOpenXMLFile (var OutFile : TextFile;
CreateHeader: boolean; DataID: string);
procedure WriteLandMarksToOpenXMLFile (var OutFile : TextFile;
CreateHeader: boolean; DataID: string);
procedure RestoreLastDeletedCalPoint;
property ZoomState: TZoomState read FZoomState;
procedure ZoomHistory (Index: integer);
property ZoomStack [StackIx: integer]: TgmZoomStackEntry
read GetZoomStackEntry;
{$IFDEF DEVELOPVERS}
{$I intf_geomap_futurevers2.pas}
{$ENDIF}
published
property Align;
property AllowPan: boolean read GetAllowPan write SetAllowPan;
property AntiAlias: boolean read FAntiAlias write SetAntiAlias;
property CalibModel : TCalibModel
read FCalibModel write SetCalibModel;
property CacheMagLimit: double
read FCacheMagLimit write SetCacheMagLimit;
property ColorBackGnd: TColor
read FColorBakGnd write SetColorBakGnd;
property ColorGraticule: TColor
read FColorGratLine write SetColorGratLine;
property ColorCalibPoints: TColor
read FColorGratPoints write SetColorGratPoints;
property ColorFrame: TColor
read FFrameColor write SetColorFrame;
property ConfinePanToMapImage: boolean
read FConfinePan write SetConfinePan;
property DragCursor;
property DragMode;
property EmptyMsg: string read FEmptyMsg write SetEmptyMsg;
property FrameStyle: TFrameStyle read FFrameStyle write SetFrameStyle;
property GratLineDist: double read FGratLineDist write SetGratLineDist;
property MouseAction: TMouseActMode
read FMouseAction write FMouseAction;
property ParentShowHint;
property PopupMenu;
property ShowGraticule: TShowGrat read FShowGrat write SetShowGrat;
property ShowHint;
property Visible;
property OnClick;
property OnBeginRubberBand: TOnRubberBandActionEvent
read FOnBeginRubberBand write FOnBeginRubberBand;
property OnContinueRubberBand: TOnRubberBandActionEvent
read FOnContRubberBand write FOnContRubberBand;
property OnEndRubberBand: TOnRubberBandActionEvent
read FOnEndRubberBand write FOnEndRubberBand;
property OnDataLoading: TProgressEvent
read FOnDataLoading write FOnDataLoading;
property OnDataRendered: TRenderEvent
read FOnDataRendered write FOnDataRendered;
property OnDrawLandmark: TDrawLandmarkEvent
read FOnDrawLandmark write FOnDrawLandmark;
property OnDblClick;
property OnMapImageRequest: TMapImgRequestEvent
read FOnMapImgRequest write FOnMapImgRequest;
property OnLandMarkAction: TLandMarkActionEvent
read FOnLMAction write FOnLMAction;
property OnMouseDown;
property OnMouseMove;
property OnMouseWheel;
property OnMouseWheelUp;
property OnMouseWheelDown;
property OnMouseUp;
property OnStartDrag;
property OnDragDrop;
property OnEndDrag;
property OnDragOver;
{$IFNDEF ISCLX} // Kylix does not know about OnCanResize
property OnCanResize;
property OnResize;
{$ENDIF}
property OnZoomPan: TZoomPanEvent read FOnZoomPan write FOnZoomPan;
end;
function DefaultSymbolRecord: TSymbol;
procedure DrawLandMarkSymbolOnCanvas (cv: TCanvas; x, y: integer;
LMType: TLandMarkElement; colorFG, colorBG: TColor;
size, dir, leng: integer; transp: boolean);
function ParseCalibData (FName: string; DataID: string; var CalibData: TCalibData;
var CalibModel: TCalibModel): boolean; overload;
function ParseCalibData (InStream: TMemoryStream; DataID: string;
var CalibData: TCalibData; var CalibModel: TCalibModel): boolean;overload;
function PositionInMap (Latit, Longit: double; Corners: TCornerArray): boolean;
procedure WriteRawCalDataToOpenXMLFile (var OutFile : TextFile;
CreateHeader: boolean; DataID: string; CalData: TCalibData;
CalibModel: TCalibModel);
|