diff --git a/BuildTools/macosx/GeoDa-GDAL-Info.plist b/BuildTools/macosx/GeoDa-GDAL-Info.plist index a89de7f08..e49c3081a 100644 --- a/BuildTools/macosx/GeoDa-GDAL-Info.plist +++ b/BuildTools/macosx/GeoDa-GDAL-Info.plist @@ -21,9 +21,9 @@ CFBundlePackageType APPL CFBundleSignature - ???? + io.gitub.geodacenter CFBundleVersion - 1.0 + 1.12 DTCompiler 4.2 DTPlatformBuild diff --git a/BuildTools/ubuntu/package/DEBIAN/control1804 b/BuildTools/ubuntu/package/DEBIAN/control1804 index 9ca5981ff..2b6ed527c 100644 --- a/BuildTools/ubuntu/package/DEBIAN/control1804 +++ b/BuildTools/ubuntu/package/DEBIAN/control1804 @@ -4,7 +4,7 @@ Architecture: amd64 Priority: optional Section: graphics Installed-Size: 88128 -Depends: libgdal-dev, zlib1g, libexpat1, freeglut3, libreadline7, libgtk-3-0, libc-dev-bin, libssl1.0.0, libwebkitgtk-1.0-0 +Depends: libcurl4-openssl-dev, libgdal-dev, zlib1g, libexpat1, freeglut3, libreadline7, libgtk-3-0, libc-dev-bin, libssl1.0.0, libwebkitgtk-1.0-0 Maintainer: Luc Anselin < anselin@uchicago.edu > Provides: geoda Homepage: http://spatial.uchicago.edu diff --git a/BuildTools/windows/installer/32bit/GeoDa.iss b/BuildTools/windows/installer/32bit/GeoDa.iss index 6b80dbb28..f2076383f 100644 --- a/BuildTools/windows/installer/32bit/GeoDa.iss +++ b/BuildTools/windows/installer/32bit/GeoDa.iss @@ -20,10 +20,17 @@ OutputBaseFilename=geoda_setup ChangesAssociations=yes +ShowLanguageDialog=yes + +[Languages] +Name: "en"; MessagesFile: "compiler:Default.isl" +Name: "zh"; MessagesFile: "compiler:Languages\ChineseSimplified.isl" + [dirs] Name: "{app}"; Permissions: everyone-full; Check: InitializeSetup -Name: "{app}\basemap_cache"; Permissions: everyone-full -Name: "{app}\Examples"; Permissions: everyone-full +Name: "{app}\Examples"; Permissions: everyone-full +Name: "{app}\basemap_cache"; Permissions: everyone-full +Name: "{app}\lang"; Permissions: everyone-full [Files] Source: "..\..\Release\GeoDa.exe"; DestDir: "{app}"; DestName: "GeoDa.exe" @@ -61,9 +68,7 @@ Source: "..\..\temp\boost_1_57_0\stage\lib\boost_system-vc100-mt-1_57.dll"; Dest Source: "..\..\..\..\Algorithms\lisa_kernel.cl"; DestDir: "{app}" Source: "..\..\..\..\internationalization\lang\*"; DestDir: "{app}\lang"; Flags: recursesubdirs -Source: "..\..\..\..\SampleData\Examples\*"; DestDir: "{app}\Examples"; Flags: recursesubdirs uninsneveruninstall - - +Source: "..\..\..\..\SampleData\Examples\*"; DestDir: "{app}\Examples"; Flags: recursesubdirs Source: "..\..\temp\gdal\data\*"; DestDir: "{app}\data"; Flags: recursesubdirs ;Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme @@ -75,7 +80,6 @@ Name: "{group}\Uninstall"; Filename: "{uninstallexe}" Name: "{commondesktop}\GeoDa"; Filename: "{app}\GeoDa.exe" ;Name: "{commondesktop}\GeoDa"; Filename: "{app}\run_geoda.bat"; IconFilename: "{app}\GeoDa.ico" - [Registry] ; set PATH ; set GEODA_GDAL_DATA diff --git a/BuildTools/windows/installer/64bit/GeoDa.iss b/BuildTools/windows/installer/64bit/GeoDa.iss index d85bcf50a..7de8d1ca1 100644 --- a/BuildTools/windows/installer/64bit/GeoDa.iss +++ b/BuildTools/windows/installer/64bit/GeoDa.iss @@ -64,11 +64,11 @@ Source: "..\..\run_geoda.bat"; DestDir: "{app}" Source: "..\..\Release\sqlite.dll"; DestDir: "{app}" Source: "..\..\temp\curl-7.46.0\builds\curlib\bin\libcurl.dll"; DestDir: "{app}" Source: "..\..\temp\expat-2.1.0\build\Release\expat.dll"; DestDir: "{app}" +Source: "..\..\temp\gdal\gdal_geoda20.dll"; DestDir: "{app}" Source: "..\..\temp\libspatialite-4.0.0\spatialite.dll"; DestDir: "{app}" Source: "..\..\temp\geos-3.3.8\src\geos_c.dll"; DestDir: "{app}" Source: "..\..\temp\freexl-1.0.0e\freexl.dll"; DestDir: "{app}" Source: "..\..\temp\proj-4.8.0\src\proj.dll"; DestDir: "{app}" -Source: "..\..\temp\gdal\gdal_geoda20.dll"; DestDir: "{app}" Source: "..\..\temp\pgsql\lib\libpq.dll"; DestDir: "{app}" Source: "..\..\temp\pgsql\bin\ssleay32.dll"; DestDir: "{app}" Source: "..\..\temp\pgsql\bin\libintl-8.dll"; DestDir: "{app}" diff --git a/DialogTools/KMeansDlg.cpp b/DialogTools/KMeansDlg.cpp index aea0e9655..526e5ec64 100644 --- a/DialogTools/KMeansDlg.cpp +++ b/DialogTools/KMeansDlg.cpp @@ -84,11 +84,10 @@ void KClusterDlg::CreateControls() wxStaticText* st1 = new wxStaticText(panel, wxID_ANY, _("Number of Clusters:"), wxDefaultPosition, wxSize(128,-1)); - combo_n = new wxChoice(panel, wxID_ANY, wxDefaultPosition, wxSize(200,-1), 0, NULL); - max_n_clusters = num_obs < 60 ? num_obs : 60; + combo_n = new wxComboBox(panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(200,-1), 0, NULL); + max_n_clusters = num_obs < 100 ? num_obs : 100; for (int i=2; iAppend(wxString::Format("%d", i)); - combo_n->SetSelection(3); gbox->Add(st1, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxLEFT, 10); gbox->Add(combo_n, 1, wxEXPAND); @@ -464,7 +463,19 @@ bool KClusterDlg::Run(vector& clusters) resetrandom(); } - int ncluster = combo_n->GetSelection() + 2; + int ncluster = 0; + wxString str_ncluster = combo_n->GetValue(); + long value_ncluster; + if (str_ncluster.ToLong(&value_ncluster)) { + ncluster = value_ncluster; + } + if (ncluster < 2 || ncluster > num_obs) { + wxString err_msg = _("Please enter a valid number of clusters."); + wxMessageDialog dlg(NULL, err_msg, _("Error"), wxOK | wxICON_ERROR); + dlg.ShowModal(); + return false; + } + int transform = combo_tranform->GetSelection(); if (!GetInputData(transform,1)) diff --git a/DialogTools/KMeansDlg.h b/DialogTools/KMeansDlg.h index 01dc5dc93..d538e37df 100644 --- a/DialogTools/KMeansDlg.h +++ b/DialogTools/KMeansDlg.h @@ -24,7 +24,7 @@ #include #include #include - +#include #include "../FramesManager.h" #include "../VarTools.h" @@ -73,7 +73,7 @@ class KClusterDlg : public AbstractClusterDlg wxCheckBox* chk_seed; wxChoice* combo_method; - wxChoice* combo_n; + wxComboBox* combo_n; wxChoice* combo_cov; wxTextCtrl* m_textbox; wxTextCtrl* m_iterations; diff --git a/DialogTools/SpectralClusteringDlg.cpp b/DialogTools/SpectralClusteringDlg.cpp index 414a9a4c2..fa3634e98 100644 --- a/DialogTools/SpectralClusteringDlg.cpp +++ b/DialogTools/SpectralClusteringDlg.cpp @@ -106,10 +106,10 @@ void SpectralClusteringDlg::CreateControls() // NumberOfCluster Control wxStaticText* st1 = new wxStaticText(panel, wxID_ANY, _("Number of Clusters:"), wxDefaultPosition, wxSize(128,-1)); - combo_n = new wxChoice(panel, wxID_ANY); - int max_n_clusters = num_obs < 60 ? num_obs : 60; - for (int i=2; iAppend(wxString::Format("%d", i)); - combo_n->SetSelection(3); + combo_n = new wxComboBox(panel, wxID_ANY); + int max_n_clusters = num_obs < 100 ? num_obs : 100; + for (int i=2; iAppend(wxString::Format("%d", i)); gbox->Add(st1, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT | wxLEFT, 10); gbox->Add(combo_n, 1, wxEXPAND); @@ -520,7 +520,18 @@ void SpectralClusteringDlg::OnOK(wxCommandEvent& event ) resetrandom(); } - int ncluster = combo_n->GetSelection() + 2; + int ncluster = 0; + wxString str_ncluster = combo_n->GetValue(); + long value_ncluster; + if (str_ncluster.ToLong(&value_ncluster)) { + ncluster = value_ncluster; + } + if (ncluster < 2 || ncluster > num_obs) { + wxString err_msg = _("Please enter a valid number of cluster."); + wxMessageDialog dlg(NULL, err_msg, _("Error"), wxOK | wxICON_ERROR); + dlg.ShowModal(); + return; + } wxString field_name = m_textbox->GetValue(); if (field_name.IsEmpty()) { diff --git a/DialogTools/SpectralClusteringDlg.h b/DialogTools/SpectralClusteringDlg.h index 2e2984044..96fdcd511 100644 --- a/DialogTools/SpectralClusteringDlg.h +++ b/DialogTools/SpectralClusteringDlg.h @@ -24,6 +24,7 @@ #include #include #include +#include #include "../FramesManager.h" #include "../VarTools.h" @@ -59,7 +60,7 @@ class SpectralClusteringDlg : public AbstractClusterDlg protected: wxCheckBox* chk_seed; wxChoice* combo_method; - wxChoice* combo_n; + wxComboBox* combo_n; wxChoice* combo_cov; wxTextCtrl* m_textbox; wxTextCtrl* m_iterations; diff --git a/Explore/Basemap.cpp b/Explore/Basemap.cpp index 7d0773f20..0d9cee1ac 100644 --- a/Explore/Basemap.cpp +++ b/Explore/Basemap.cpp @@ -143,7 +143,7 @@ vector ExtractBasemapResources(wxString basemap_sources) { return groups; } -XY::XY(double _x, double _y) +XYFraction::XYFraction(double _x, double _y) { x = _x; y = _y; @@ -152,20 +152,22 @@ XY::XY(double _x, double _y) } -Basemap::Basemap(BasemapItem& basemap_item, +Basemap::Basemap(BasemapItem& _basemap_item, Screen* _screen, - MapLayer *_map, + MapLayer* _map, + MapLayer* _origMap, wxString _cachePath, OGRCoordinateTransformation *_poCT, double _scale_factor) { - poCT = _poCT; + basemap_item = _basemap_item; screen = _screen; map = _map; - scale_factor = _scale_factor; - origMap = new MapLayer(map); - + origMap = _origMap; cachePath = _cachePath; + poCT = _poCT; + scale_factor = _scale_factor; + bDownload = false; downloadThread = NULL; isPan = false; @@ -298,8 +300,8 @@ void Basemap::ResizeScreen(int _width, int _height) void Basemap::Pan(int x0, int y0, int x1, int y1) { - XY origXY((x0 + leftP + offsetX)/256.0, (y0 + topP + offsetY)/256.0); - XY newXY((x1 + leftP + offsetX)/256.0, (y1 + topP + offsetY)/256.0); + XYFraction origXY((x0 + leftP + offsetX)/256.0, (y0 + topP + offsetY)/256.0); + XYFraction newXY((x1 + leftP + offsetX)/256.0, (y1 + topP + offsetY)/256.0); LatLng* p0 = XYToLatLng(origXY, true); LatLng* p1 = XYToLatLng(newXY, true); @@ -331,8 +333,8 @@ bool Basemap::Zoom(bool is_zoomin, int x0, int y0, int x1, int y1) bottom = screen->height * 2 - bottom; } - XY origXY((left + leftP + offsetX)/256.0, (top + topP + offsetY)/256.0); - XY newXY((right + leftP + offsetX)/256.0, (bottom + topP + offsetY)/256.0); + XYFraction origXY((left + leftP + offsetX)/256.0, (top + topP + offsetY)/256.0); + XYFraction newXY((right + leftP + offsetX)/256.0, (bottom + topP + offsetY)/256.0); LatLng* p0 = XYToLatLng(origXY, true); LatLng* p1 = XYToLatLng(newXY, true); @@ -440,11 +442,11 @@ void Basemap::GetTiles() // following: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames // top-left / north-west LatLng nw(map->north, map->west); - XY* topleft = LatLngToRawXY(nw); + XYFraction* topleft = LatLngToRawXY(nw); // bottom-right / south-east LatLng se(map->south, map->east); - XY* bottomright = LatLngToRawXY(se); + XYFraction* bottomright = LatLngToRawXY(se); startX = topleft->GetXInt(); startY = topleft->GetYInt(); @@ -647,7 +649,7 @@ void Basemap::DownloadTile(int x, int y) } -LatLng* Basemap::XYToLatLng(XY &xy, bool isLL) +LatLng* Basemap::XYToLatLng(XYFraction &xy, bool isLL) { double x = xy.x; if (x > nn) @@ -662,22 +664,22 @@ LatLng* Basemap::XYToLatLng(XY &xy, bool isLL) return new LatLng(lat, lng); } -XY* Basemap::LatLngToRawXY(LatLng &latlng) +XYFraction* Basemap::LatLngToRawXY(LatLng &latlng) { double lat_rad = latlng.GetLatRad(); double x = (latlng.GetLngDeg() + 180.0 ) / 360.0 * nn; double y = (1.0 - log(tan(lat_rad) + 1.0 / cos(lat_rad)) / M_PI) / 2.0 * nn; - return new XY(x, y); + return new XYFraction(x, y); } -XY* Basemap::LatLngToXY(LatLng &latlng) +XYFraction* Basemap::LatLngToXY(LatLng &latlng) { double lat_rad = latlng.GetLatRad(); double x = (latlng.GetLngDeg() + 180.0 ) / 360.0 * nn; double y = (1.0 - log(tan(lat_rad) + 1.0 / cos(lat_rad)) / M_PI) / 2.0 * nn; int xp = (int)(x * 256 - leftP) - offsetX; int yp = (int)(y * 256 - topP) - offsetY; - return new XY(xp, yp); + return new XYFraction(xp, yp); } void Basemap::LatLngToXY(double lng, double lat, int &x, int &y) diff --git a/Explore/Basemap.h b/Explore/Basemap.h index 4e51a79e6..962314f7a 100644 --- a/Explore/Basemap.h +++ b/Explore/Basemap.h @@ -49,6 +49,11 @@ class BasemapItem { bool operator==(const BasemapItem& other) { return (group == other.group && name == other.name && url == other.url); } + void Reset() { + group = ""; + name = ""; + url = ""; + } wxString group; wxString name; wxString url; @@ -117,10 +122,10 @@ namespace GDA { double GetLngRad() {return lng * M_PI / 180.0;} }; - class XY { + class XYFraction { public: - XY(){} - XY(int _x, int _y) { + XYFraction(){} + XYFraction(int _x, int _y) { x = _x; y = _y; xint = _x; @@ -128,8 +133,8 @@ namespace GDA { xfrac = .0; yfrac = .0; } - XY(double _x, double _y); - ~XY(){} + XYFraction(double _x, double _y); + ~XYFraction(){} double x; double y; @@ -156,18 +161,32 @@ namespace GDA { class MapLayer { public: - MapLayer(){} + double north; + double south; + double west; + double east; + OGRCoordinateTransformation *poCT; + OGRCoordinateTransformation *poCT_rev; + + MapLayer(){ + poCT = NULL; + poCT_rev = NULL; + } MapLayer(MapLayer* _map) { north = _map->north; south = _map->south; west = _map->west; east = _map->east; + poCT = NULL; + poCT_rev = NULL; } MapLayer(double _n, double _w, double _s, double _e){ north = _n; south = _s; west = _w; east = _e; + poCT = NULL; + poCT_rev = NULL; } MapLayer(double _n, double _w, double _s, double _e, OGRCoordinateTransformation *_poCT){ @@ -176,6 +195,7 @@ namespace GDA { west = _w; east = _e; poCT = _poCT; + poCT_rev = NULL; if (poCT!= NULL) { if (poCT->Transform(1, &_w, &_n)) { west = _w; @@ -185,6 +205,7 @@ namespace GDA { east = _e; south = _s; } + poCT_rev = OGRCreateCoordinateTransformation(poCT->GetTargetCS(), poCT->GetSourceCS()); } } MapLayer(LatLng& nw, LatLng& se){ @@ -192,22 +213,23 @@ namespace GDA { west = nw.lng; south = se.lat; east = se.lng; + poCT = NULL; + poCT_rev = NULL; } - ~MapLayer(){} - - MapLayer* operator=(const MapLayer* other) { - north = other->north; - south = other->south; - west = other->west; - east = other->east; - return this; + ~MapLayer(){ + } - double north; - double south; - double west; - double east; - OGRCoordinateTransformation *poCT; + void GetWestNorthEastSouth(double& w, double& n, double& e, double& s) { + if (poCT_rev) { + w = west; + n = north; + e = east; + s = south; + poCT_rev->Transform(1, &w, &n); + poCT_rev->Transform(1, &e, &s); + } + } double GetWidth() { if (east >= west) return east - west; @@ -258,18 +280,48 @@ namespace GDA { north = north + offsetH; south = south - offsetH; } + MapLayer* operator=(const MapLayer* other) { + north = other->north; + south = other->south; + west = other->west; + east = other->east; + poCT = NULL; + poCT_rev = NULL; + if (other->poCT) { + poCT = OGRCreateCoordinateTransformation(other->poCT->GetSourceCS(), other->poCT->GetTargetCS()); + } + if (other->poCT_rev) { + poCT_rev = OGRCreateCoordinateTransformation(other->poCT_rev->GetSourceCS(), other->poCT_rev->GetTargetCS()); + } + return this; + } }; // only for Web mercator projection class Basemap { + int nn; // pow(2.0, zoom) + bool bDownload; + boost::thread* downloadThread; + boost::thread* downloadThread1; + int GetOptimalZoomLevel(double paddingFactor=1.2); + int GetEasyZoomLevel(); + + void GetTiles(); + void _GetTiles(int start_x, int start_y, int end_x, int end_y); + void _GetTiles(int x, int start_y, int end_y); + + void DownloadTile(int x, int y); + + bool _HasInternet(); public: Basemap(){} Basemap(BasemapItem& basemap_item, - Screen *_screen, - MapLayer *_map, + Screen* _screen, + MapLayer* _map, + MapLayer* _origMap, wxString _cachePath, - OGRCoordinateTransformation *_poCT, + OGRCoordinateTransformation* _poCT, double scale_factor = 1.0); ~Basemap(); @@ -309,8 +361,9 @@ namespace GDA { double Deg2Rad (double degree) { return degree * M_PI / 180.0; } double Rad2Deg (double radians) { return radians * 180.0 / M_PI;} - XY* LatLngToXY(LatLng &latlng); - LatLng* XYToLatLng(XY &xy, bool isLL=false); + XYFraction* LatLngToXY(LatLng &latlng); + XYFraction* LatLngToRawXY(LatLng &latlng); + LatLng* XYToLatLng(XYFraction &xy, bool isLL=false); void LatLngToXY(double lng, double lat, int &x, int &y); wxString GetTileUrl(int x, int y); @@ -331,27 +384,7 @@ namespace GDA { void SetupMapType(BasemapItem& basemap_item); void CleanCache(); - - protected: - - int nn; // pow(2.0, zoom) - - bool bDownload; - boost::thread* downloadThread; - boost::thread* downloadThread1; - - int GetOptimalZoomLevel(double paddingFactor=1.2); - int GetEasyZoomLevel(); - - XY* LatLngToRawXY(LatLng &latlng); - - void GetTiles(); - void _GetTiles(int start_x, int start_y, int end_x, int end_y); - void _GetTiles(int x, int start_y, int end_y); - - void DownloadTile(int x, int y); - - bool _HasInternet(); + }; } diff --git a/Explore/CatClassification.cpp b/Explore/CatClassification.cpp index 6ea099721..521638379 100644 --- a/Explore/CatClassification.cpp +++ b/Explore/CatClassification.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -2089,35 +2090,38 @@ void CatClassification::PickColorSet(std::vector& color_vec, ColorScheme coltype, int num_color, bool reversed) { - - if (coltype == unique_color_scheme) { color_vec.resize(num_color, *wxBLUE); - wxColour unique_colors[20] = { - wxColour(166,206,227), - wxColour(31,120,180), - wxColour(178,223,138), - wxColour(51,160,44), - wxColour(251,154,153), - wxColour(227,26,28), - wxColour(253,191,111), - wxColour(255,127,0), - wxColour(106,61,154), - wxColour(255,255,153), - wxColour(177,89,40), - wxColour(255,255,179), - wxColour(190,186,218), - wxColour(251,128,114), - wxColour(128,177,211), - wxColour(179,222,105), - wxColour(252,205,229), - wxColour(217,217,217), - wxColour(188,128,189), - wxColour(204,235,197) + int unique_colors[20][3] = { + {166,206,227}, + {31,120,180}, + {178,223,138}, + {51,160,44}, + {251,154,153}, + {227,26,28}, + {253,191,111}, + {255,127,0}, + {106,61,154}, + {255,255,153}, + {177,89,40}, + {255,255,179}, + {190,186,218}, + {251,128,114}, + {128,177,211}, + {179,222,105}, + {252,205,229}, + {217,217,217}, + {188,128,189}, + {204,235,197} }; - + srand (0); for (int i = 0; i < num_color; i++) { - color_vec[i] = unique_colors[i]; + int* rgb = unique_colors[i % 20]; + int rnd = rand() * (i / 20); + int r = (rgb[0] + rnd) % 255; + int g = (rgb[1] + rnd) % 255; + int b = (rgb[2] + rnd) % 255; + color_vec[i].Set(r, g, b); } return; } diff --git a/Explore/CatClassification.h b/Explore/CatClassification.h index 9b2075905..84e683098 100644 --- a/Explore/CatClassification.h +++ b/Explore/CatClassification.h @@ -35,7 +35,7 @@ class TableInterface; namespace CatClassification { - const int max_num_categories = 20; + const int max_num_categories = 2000; enum CatClassifType { no_theme, hinge_15, hinge_30, quantile, percentile, diff --git a/Explore/MapLayer.cpp b/Explore/MapLayer.cpp index d0db36332..d12f1c4f2 100644 --- a/Explore/MapLayer.cpp +++ b/Explore/MapLayer.cpp @@ -17,9 +17,9 @@ point_radius(2), opacity(255), pen_size(1), show_boundary(false), -is_hide(true), map_boundary(NULL) { + is_hide = true; } BackgroundMapLayer::BackgroundMapLayer(wxString name, OGRLayerProxy* _layer_proxy, OGRSpatialReference* sr) @@ -32,10 +32,10 @@ point_radius(2), opacity(255), pen_size(1), show_boundary(false), -is_hide(false), map_boundary(NULL), show_connect_line(false) { + is_hide = false; num_obs = layer_proxy->GetNumRecords(); shape_type = layer_proxy->GetGdaGeometries(shapes, sr); // this is for map boundary only @@ -164,7 +164,7 @@ void BackgroundMapLayer::DrawHighlight(wxMemoryDC& dc, MapCanvas* map_canvas) } vector& ids = aid_idx[aid]; for (int j=0; jIsHide()) { dc.DrawLine(shapes[i]->center, associated_layer->GetShape(ids[j])->center); } } @@ -173,7 +173,7 @@ void BackgroundMapLayer::DrawHighlight(wxMemoryDC& dc, MapCanvas* map_canvas) // draw self highlight for (int i=0; ipaintSelf(dc); } } @@ -321,16 +321,6 @@ Shapefile::ShapeType BackgroundMapLayer::GetShapeType() return shape_type; } -void BackgroundMapLayer::SetHide(bool flag) -{ - is_hide = flag; -} - -bool BackgroundMapLayer::IsHide() -{ - return is_hide; -} - void BackgroundMapLayer::drawLegend(wxDC& dc, int x, int y, int w, int h) { wxPen pen(pen_color); diff --git a/Explore/MapLayer.hpp b/Explore/MapLayer.hpp index 755a6d466..6733efa7f 100644 --- a/Explore/MapLayer.hpp +++ b/Explore/MapLayer.hpp @@ -25,11 +25,14 @@ typedef pair Association; class AssociateLayerInt { +protected: + bool is_hide; + public: // primary key : AssociateLayer map associated_layers; map associated_lines; - + AssociateLayerInt() {} virtual ~AssociateLayerInt() {} @@ -48,6 +51,8 @@ class AssociateLayerInt associated_layers.clear(); } virtual GdaShape* GetShape(int i) = 0; + virtual void SetHide(bool flag) { is_hide = flag; } + virtual bool IsHide() { return is_hide; } }; @@ -66,7 +71,7 @@ class BackgroundMapLayer : public AssociateLayerInt int opacity; int pen_size; bool show_boundary; - bool is_hide; + public: OGRLayerProxy* layer_proxy; @@ -105,9 +110,6 @@ class BackgroundMapLayer : public AssociateLayerInt void SetName(wxString name); virtual wxString GetName(); - void SetHide(bool flag); - bool IsHide(); - void SetPenColour(wxColour& color); wxColour GetPenColour(); diff --git a/Explore/MapLayerTree.cpp b/Explore/MapLayerTree.cpp index cd95b4806..415c42e02 100644 --- a/Explore/MapLayerTree.cpp +++ b/Explore/MapLayerTree.cpp @@ -37,7 +37,7 @@ SetAssociationDlg::SetAssociationDlg(wxWindow* parent, AssociateLayerInt* ml,vec layer_list.push_back(new wxChoice(this, XRCID(layer_id), wxDefaultPosition, wxSize(100,-1))); field_list.push_back(new wxChoice(this, wxID_ANY, wxDefaultPosition, wxSize(100,-1))); my_field_list.push_back(new wxChoice(this, wxID_ANY, wxDefaultPosition, wxSize(100,-1))); - conn_list.push_back(new wxCheckBox(this, wxID_ANY, "Show Connect line")); + conn_list.push_back(new wxCheckBox(this, wxID_ANY, _("Show connect line"))); layer_list[i]->Bind(wxEVT_CHOICE, &SetAssociationDlg::OnLayerSelect, this); } @@ -830,7 +830,7 @@ void MapTree::DrawLegend(wxDC& dc, int x, int y, wxString text) dc.DrawLine(10, y+2, x, y+2); BackgroundMapLayer* ml = GetMapLayer(text); - + x = x + 45; // switch width dc.SetPen(*wxBLACK_PEN); if (text == current_map_title) { @@ -854,12 +854,15 @@ void MapTree::DrawLegend(wxDC& dc, int x, int y, wxString text) dc.DrawText(text, x, y); // draw switch button - if (ml == NULL) { - return; + AssociateLayerInt* ml_int; + if (ml) { + ml_int = ml; + } else { + ml_int = canvas; } wxString ds_thumb = "switch-on.png"; - if (ml->IsHide()) ds_thumb = "switch-off.png"; + if (ml_int->IsHide()) ds_thumb = "switch-off.png"; wxString file_path_str = GenUtils::GetSamplesDir() + ds_thumb; wxImage img; @@ -932,12 +935,18 @@ void MapTree::OnSwitchClick(wxMouseEvent& event) wxString map_name = map_titles[new_order[switch_idx]]; BackgroundMapLayer* ml = GetMapLayer(map_name); - + AssociateLayerInt* ml_int; if (ml) { - ml->SetHide(!ml->IsHide()); + ml_int = ml; + } else { + ml_int = canvas; + } + + if (ml_int) { + ml_int->SetHide(!ml_int->IsHide()); canvas->DisplayMapLayers(); Refresh(); - } + } } } diff --git a/Explore/MapLayoutView.cpp b/Explore/MapLayoutView.cpp index 8a519734a..8eb40d993 100644 --- a/Explore/MapLayoutView.cpp +++ b/Explore/MapLayoutView.cpp @@ -347,7 +347,7 @@ CanvasLayoutDialog::CanvasLayoutDialog(wxString _project_name, TemplateLegend* _ canvas->AddShape(legend_shape); legend_shape->SetX(50 + legend_shape->GetWidth()); - legend_shape->SetY(50 + legend_shape->GetHeight()); + legend_shape->SetY(120); legend_shape->MakeControlPoints(); legend_shape->SetMaintainAspectRatio(true); legend_shape->Show(false); diff --git a/Explore/MapNewView.cpp b/Explore/MapNewView.cpp index 433d4c999..2e1864426 100644 --- a/Explore/MapNewView.cpp +++ b/Explore/MapNewView.cpp @@ -196,6 +196,7 @@ print_detailed_basemap(false), maplayer_state(project_s->GetMapLayerState()) { wxLogMessage("MapCanvas::MapCanvas()"); + is_hide = false; layer_name = project->layername; bg_maps = project->CloneBackgroundMaps(); ds_name = project->GetDataSource()->GetOGRConnectStr(); @@ -533,13 +534,7 @@ void MapCanvas::ResetShapes() delete faded_layer_bm; faded_layer_bm = NULL; } - if (isDrawBasemap) { - if (basemap) { - basemap->origMap->west = last_scale_trans.orig_data_x_min; - basemap->origMap->east = last_scale_trans.orig_data_x_max; - basemap->origMap->south = last_scale_trans.orig_data_y_min; - basemap->origMap->north = last_scale_trans.orig_data_y_max; - } + if (basemap) { basemap->Reset(); } last_scale_trans.Reset(); @@ -560,14 +555,15 @@ void MapCanvas::ZoomShapes(bool is_zoomin) } if (isDrawBasemap) { - bool zoom_ok = basemap->Zoom(is_zoomin, sel2.x, sel2.y, sel1.x, sel1.y); - if (zoom_ok) { - ResizeSelectableShps(); + if (basemap) { + bool zoom_ok = basemap->Zoom(is_zoomin, sel2.x, sel2.y, sel1.x, sel1.y); + if (zoom_ok) { + ResizeSelectableShps(); + } } - return; + } else { + TemplateCanvas::ZoomShapes(is_zoomin); } - - TemplateCanvas::ZoomShapes(is_zoomin); } void MapCanvas::PanShapes() @@ -724,23 +720,14 @@ bool MapCanvas::InitBasemap() if (project->sourceSR != NULL) { int nGCS = project->sourceSR->GetEPSGGeogCS(); - //if (nGCS != 4326) { - //} OGRSpatialReference destSR; destSR.importFromEPSG(4326); poCT = OGRCreateCoordinateTransformation(project->sourceSR,&destSR); } GDA::Screen* screen = new GDA::Screen(screenW, screenH); - double shps_orig_ymax = last_scale_trans.data_y_max; - double shps_orig_xmin = last_scale_trans.data_x_min; - double shps_orig_ymin = last_scale_trans.data_y_min; - double shps_orig_xmax = last_scale_trans.data_x_max; - GDA::MapLayer* map = new GDA::MapLayer(shps_orig_ymax, - shps_orig_xmin, - shps_orig_ymin, - shps_orig_xmax, - poCT); - if (poCT == NULL && !map->IsWGS84Valid()) { + GDA::MapLayer* current_map = new GDA::MapLayer(last_scale_trans.data_y_max, last_scale_trans.data_x_min, last_scale_trans.data_y_min, last_scale_trans.data_x_max, poCT); + GDA::MapLayer* orig_map = new GDA::MapLayer(last_scale_trans.orig_data_y_max, last_scale_trans.orig_data_x_min, last_scale_trans.orig_data_y_min, last_scale_trans.orig_data_x_max, poCT); + if (poCT == NULL && !orig_map->IsWGS84Valid()) { isDrawBasemap = false; wxStatusBar* sb = 0; if (template_frame) { @@ -752,12 +739,32 @@ bool MapCanvas::InitBasemap() } return false; } else { - basemap = new GDA::Basemap(basemap_item, screen, map, GenUtils::GetBasemapCacheDir(), poCT, scale_factor); + basemap = new GDA::Basemap(basemap_item, screen, current_map, orig_map, GenUtils::GetBasemapCacheDir(), poCT, scale_factor); } } return true; } +void MapCanvas::SetNoBasemap() +{ + ResetBrushing(); + isDrawBasemap = false; + basemap_item.Reset(); + if ( basemap ) { + basemap->basemap_item = basemap_item; + // keep extent if zoom in/out + double w, e, s, n; + basemap->map->GetWestNorthEastSouth(w, n, e, s); + last_scale_trans.SetExtent(w, e, s, n); + ResizeSelectableShps(); + } + layerbase_valid = false; + layer0_valid = false; + layer1_valid = false; + layer2_valid = false; + ReDraw(); +} + bool MapCanvas::DrawBasemap(bool flag, BasemapItem& _basemap_item) { ResetBrushing(); @@ -776,10 +783,9 @@ bool MapCanvas::DrawBasemap(bool flag, BasemapItem& _basemap_item) } else { if ( basemap ) { basemap->basemap_item = basemap_item; - last_scale_trans.data_x_min = basemap->map->west; - last_scale_trans.data_x_max = basemap->map->east; - last_scale_trans.data_y_min = basemap->map->south; - last_scale_trans.data_y_max = basemap->map->north; + double w, e, s, n; + basemap->map->GetWestNorthEastSouth(w, n, e, s); + last_scale_trans.SetExtent(w, e, s, n); ResizeSelectableShps(); } } @@ -872,7 +878,9 @@ void MapCanvas::DrawLayer0() BOOST_FOREACH( GdaShape* map, background_maps ) { map->paintSelf(dc); } - DrawSelectableShapes_dc(dc); + if (IsHide() == false) { + DrawSelectableShapes_dc(dc); + } BOOST_FOREACH( GdaShape* map, foreground_maps ) { map->paintSelf(dc); } @@ -1052,9 +1060,7 @@ void MapCanvas::DrawHighlightedShapes(wxMemoryDC &dc, bool revert) } else { DrawHighlight(dc, this); //DrawHighlighted(dc, revert); - } - - + } } void MapCanvas::SetHighlight(int idx) @@ -1217,18 +1223,14 @@ void MapCanvas::RenderToDC(wxDC &dc, int w, int h) layer2_valid = false; if (isDrawBasemap) { - GDA::Screen *screen = NULL; if (print_detailed_basemap) { basemap_bm = new wxBitmap(w, h, 32); basemap_scale = 1.0; last_scale_trans.SetView(w, h); - screen = new GDA::Screen(w, h); } else { // scaled basemap basemap_bm = new wxBitmap; basemap_bm->CreateScaled(screen_w, screen_h, 32, basemap_scale); - //last_scale_trans.SetView(screen_w, screen_h); - screen = new GDA::Screen(screen_w, screen_h); } OGRCoordinateTransformation *poCT = NULL; if (project->sourceSR != NULL) { @@ -1240,8 +1242,8 @@ void MapCanvas::RenderToDC(wxDC &dc, int w, int h) double shps_orig_xmin = last_scale_trans.orig_data_x_min; double shps_orig_ymin = last_scale_trans.orig_data_y_min; double shps_orig_xmax = last_scale_trans.orig_data_x_max; - GDA::MapLayer *map = new GDA::MapLayer(shps_orig_ymax, shps_orig_xmin, shps_orig_ymin, shps_orig_xmax, poCT); - if (poCT && map->IsWGS84Valid()) { + GDA::MapLayer maplayer(shps_orig_ymax, shps_orig_xmin, shps_orig_ymin, shps_orig_xmax, poCT); + if (poCT && maplayer.IsWGS84Valid()) { if (print_detailed_basemap) { basemap->ResizeScreen(w, h); basemap->Refresh(); @@ -1312,7 +1314,7 @@ void MapCanvas::RenderToDC(wxDC &dc, int w, int h) layer1_dc.Clear(); if (isDrawBasemap) { wxImage im = basemap_bm->ConvertToImage(); -#ifdef __WIN32__ +#if defined(__WIN32__) || defined(__linux__) im.Rescale(w*basemap_scale, h*basemap_scale, wxIMAGE_QUALITY_HIGH); #endif layer1_dc.DrawBitmap(im, 0, 0); @@ -2102,14 +2104,15 @@ void MapCanvas::DrawHighlight(wxMemoryDC& dc, MapCanvas* map_canvas) } vector& ids = aid_idx[aid]; for (int j=0; jIsHide()) { dc.DrawLine(selectable_shps[i]->center, associated_layer->GetShape(ids[j])->center); } } } } - - this->DrawHighlighted(dc, false); + if (IsHide() == false) { + this->DrawHighlighted(dc, false); + } } GdaShape* MapCanvas::GetShape(int i) @@ -3185,6 +3188,11 @@ void MapFrame::OnMapTreeClose(wxWindowDestroyEvent& event) map_tree = NULL; } +void MapFrame::SetNoBasemap() +{ + ((MapCanvas*) template_canvas)->SetNoBasemap(); +} + void MapFrame::OnBasemapSelect(wxCommandEvent& event) { int menu_id = event.GetId(); diff --git a/Explore/MapNewView.h b/Explore/MapNewView.h index e167db8b3..e52c60f55 100644 --- a/Explore/MapNewView.h +++ b/Explore/MapNewView.h @@ -179,6 +179,7 @@ class MapCanvas : public TemplateCanvas, public CatClassifStateObserver, public bool is_hide = false); void CleanBasemapCache(); bool DrawBasemap(bool flag, BasemapItem& bm_item); + void SetNoBasemap(); void OnIdle(wxIdleEvent& event); void TranslucentLayer0(wxMemoryDC& dc); void RenderToSVG(wxDC& dc, int svg_w, int svg_h, int map_w, int map_h, @@ -377,7 +378,7 @@ class MapFrame : public TemplateFrame, public WeightsManStateObserver virtual void OnSelectableOutlineVisible(wxCommandEvent& event); virtual void OnChangeMapTransparency(); virtual void OnDrawBasemap(bool flag, BasemapItem& bm_item); - + void SetNoBasemap(); void OnBasemapSelect(wxCommandEvent& event); void OnClose(wxCloseEvent& event); void CleanBasemap(); diff --git a/GdaConst.cpp b/GdaConst.cpp index d1e284ea9..5237502ed 100644 --- a/GdaConst.cpp +++ b/GdaConst.cpp @@ -366,12 +366,12 @@ wxString GdaConst::gda_basemap_sources = "\nStamen.Toner,https://stamen-tiles-a.a.ssl.fastly.net/toner/{z}/{x}/{y}@2x.png" "\nStamen.TonerLite,https://stamen-tiles-a.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}@2x.png" "\nStamen.Watercolor,https://stamen-tiles-a.a.ssl.fastly.net/watercolor/{z}/{x}/{y}@2x.png" -"\nOther.高德,http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}" -"\nOther.高德(卫星),http://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}" -"\nOther.高德(卫星有标签),http://webst01.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}" -"\nOther.天地图,http://t0.tianditu.cn/DataServer?T=vec_w&X={x}&Y={y}&L={z}" -"\nOther.天地图(卫星),http://t0.tianditu.cn/DataServer?T=cia_w&X={x}&Y={y}&L={z}" -"\nOther.天地图(地形),http://t0.tianditu.cn/DataServer?T=cta_w&X={x}&Y={y}&L={z}" +"\nOther.AMAP,http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}" +"\nOther.AMAP(Satellite),http://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}" +"\nOther.AMAP(SatelliteLabel),http://webst01.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}" +"\nOther.TianDiTu,http://t0.tianditu.cn/DataServer?T=vec_w&X={x}&Y={y}&L={z}" +"\nOther.TianDiTu(Satellite),http://t0.tianditu.cn/DataServer?T=cia_w&X={x}&Y={y}&L={z}" +"\nOther.TianDiTu(Terrain),http://t0.tianditu.cn/DataServer?T=cta_w&X={x}&Y={y}&L={z}" ; diff --git a/GdaShape.cpp b/GdaShape.cpp index ca7154e28..11952d288 100644 --- a/GdaShape.cpp +++ b/GdaShape.cpp @@ -156,6 +156,15 @@ void GdaScaleTrans::SetFixedAspectRatio(bool fixed) calcAffineParams(); } +void GdaScaleTrans::SetExtent(double w, double e, double s, double n) +{ + data_x_min = w; + data_x_max = e; + data_y_min = s; + data_y_max = n; + calcAffineParams(); +} + /** x_min, y_min, x_max, y_max are the bounding box limits for the entire map. target_height and target_width are ignored if set to 0. They are used when a target size smaller than the normal maximum working area size is diff --git a/GdaShape.h b/GdaShape.h index 0eddf7a55..3f6b22999 100644 --- a/GdaShape.h +++ b/GdaShape.h @@ -82,6 +82,8 @@ struct GdaScaleTrans { void Zoom(bool is_zoomin, wxPoint& from, wxPoint& to); void ScrollView(int scroll_x, int scroll_y); + void SetExtent(double w, double e, double s, double n); + int GetXNudge(); wxRealPoint GetDataCenter(); diff --git a/GeneralWxUtils.cpp b/GeneralWxUtils.cpp index 67eae8122..16ca14022 100644 --- a/GeneralWxUtils.cpp +++ b/GeneralWxUtils.cpp @@ -42,17 +42,17 @@ void SimpleReportTextCtrl::OnContextMenu(wxContextMenuEvent& event) { wxMenu* menu = new wxMenu; // Some standard items - menu->Append(XRCID("SAVE_SIMPLE_REPORT"), _("&Save")); + menu->Append(XRCID("SAVE_SIMPLE_REPORT"), _("Save")); menu->AppendSeparator(); - menu->Append(wxID_UNDO, _("&Undo")); - menu->Append(wxID_REDO, _("&Redo")); + menu->Append(wxID_UNDO, _("Undo")); + menu->Append(wxID_REDO, _("Redo")); menu->AppendSeparator(); - menu->Append(wxID_CUT, _("Cu&t")); - menu->Append(wxID_COPY, _("&Copy")); - menu->Append(wxID_PASTE, _("&Paste")); - menu->Append(wxID_CLEAR, _("&Delete")); + menu->Append(wxID_CUT, _("Cut")); + menu->Append(wxID_COPY, _("Copy")); + menu->Append(wxID_PASTE, _("Paste")); + menu->Append(wxID_CLEAR, _("Delete")); menu->AppendSeparator(); - menu->Append(wxID_SELECTALL, _("Select &All")); + menu->Append(wxID_SELECTALL, _("Select All")); // Add any custom items here Connect(XRCID("SAVE_SIMPLE_REPORT"), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(SimpleReportTextCtrl::OnSaveClick)); diff --git a/GeoDa.cpp b/GeoDa.cpp index 4b6ef4ebb..503bbc2c3 100644 --- a/GeoDa.cpp +++ b/GeoDa.cpp @@ -1588,7 +1588,7 @@ void GdaFrame::OnSetNoBasemap(wxCommandEvent& event) if (!t) return; MapFrame* f = dynamic_cast(t); - //if (f) f->OnDrawBasemap(false,0); + if (f) f->SetNoBasemap(); } void GdaFrame::OnBasemapConfig(wxCommandEvent& event) diff --git a/TemplateCanvas.cpp b/TemplateCanvas.cpp index 8a357f0be..942539f8e 100644 --- a/TemplateCanvas.cpp +++ b/TemplateCanvas.cpp @@ -1563,7 +1563,9 @@ void TemplateCanvas::OnMouseEvent(wxMouseEvent& event) sel2.x = sel2.x + (c_w/8); sel2.y = sel2.y + (c_h/8); ZoomShapes(false); - } + } else { + sel1 = sel2; + } selectstate = start; Refresh(false); } else if (event.RightDown()) { @@ -1647,7 +1649,7 @@ void TemplateCanvas::helper_PaintSelectionOutline(wxDC& dc) { if (is_showing_brush && (mousemode == select || mousemode == zoom || mousemode == zoomout)) { - if (sel1 != sel2 ) { + if (sel1 != sel2) { dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.SetPen(*wxBLACK_PEN); if (brushtype == rectangle) { diff --git a/TemplateLegend.cpp b/TemplateLegend.cpp index 88ae1565b..b4122f6d0 100644 --- a/TemplateLegend.cpp +++ b/TemplateLegend.cpp @@ -197,6 +197,11 @@ isDragDropAllowed(false) wxBoxSizer* box = new wxBoxSizer(wxHORIZONTAL); box->Add(this, 1, wxEXPAND|wxALL); parent->SetSizer(box); + + int numRect = template_canvas->cat_data.GetNumCategories(0); + int height = numRect * 20 + py; + SetVirtualSize(wxSize(-1,height)); + SetScrollRate(1, 1); } TemplateLegend::~TemplateLegend() @@ -454,6 +459,9 @@ void TemplateLegend::OnDraw(wxDC& dc) void TemplateLegend::Recreate() { recreate_labels = true; + int numRect = template_canvas->cat_data.GetNumCategories(0); + int height = numRect * 20 + py; + SetVirtualSize(wxSize(-1,height)); Refresh(); } diff --git a/internationalization/lang/es/GeoDa.mo b/internationalization/lang/es/GeoDa.mo index f82701394..99d1f0250 100644 Binary files a/internationalization/lang/es/GeoDa.mo and b/internationalization/lang/es/GeoDa.mo differ diff --git a/internationalization/lang/zh_CN/GeoDa.mo b/internationalization/lang/zh_CN/GeoDa.mo index b479cd948..726c23e20 100644 Binary files a/internationalization/lang/zh_CN/GeoDa.mo and b/internationalization/lang/zh_CN/GeoDa.mo differ diff --git a/internationalization/pofiles/es.po b/internationalization/pofiles/es.po index ab701bbf1..74d67345d 100644 --- a/internationalization/pofiles/es.po +++ b/internationalization/pofiles/es.po @@ -10,9 +10,84 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: es\n" -"X-Generator: Poedit 2.0.8\n" +"X-Generator: Poedit 2.1.1\n" "X-Poedit-SourceCharset: UTF-8\n" +msgid "&Tools" +msgstr "Herramientas" + +msgid "&Space" +msgstr "Espacio" + +msgid "C&reate" +msgstr "Crear" + +msgid "&Explore" +msgstr "Explorar" + +msgid "&New" +msgstr "Nuevo" + +msgid "&Help" +msgstr "Ayud" + +msgid "&Run" +msgstr "&Ejecutar" + +msgid "Appl&y" +msgstr "Aplicar" + +msgid "&Close" +msgstr "Cerrar" + +msgid "&Cancel" +msgstr "Cancelar" + +msgid "&File" +msgstr "Archivo" + +msgid "&Save to Table" +msgstr "Guardar en Tabla" + +msgid "&Map" +msgstr "Mapa" + +msgid "&Edit" +msgstr "Editar" + +msgid "&Add ID Variable..." +msgstr "Añadir Variable ID" + +msgid "&Open Project" +msgstr "Abrir Proyecto" + +msgid "&Merge" +msgstr "Combinar" + +msgid "Tim&e" +msgstr "Tiempo" + +msgid "&Undo" +msgstr "Deshacer" + +msgid "&Paste" +msgstr "Pegar" + +msgid "&Save" +msgstr "Guardar" + +msgid "Select &All" +msgstr "Seleccionar Todo" + +msgid "Cu&t" +msgstr "Cortar" + +msgid "&Copy" +msgstr "Copiar" + +msgid "&Redo" +msgstr "Repetir" + msgid "Descending order" msgstr "Orden Descendente" @@ -261,8 +336,8 @@ msgstr "Mejorar Cartograma" msgid "Add new column to table" msgstr "Añadir nueva columna a la tabla" -msgid "&Tools" -msgstr "&Herramientas" +msgid "Tools" +msgstr "Herramientas" msgid "Category" msgstr "Categoría" @@ -330,11 +405,8 @@ msgstr "Correlograma Espacial" msgid "Read from an ASCII file" msgstr "Leer de un Archivo ASCII" -msgid "&Space" -msgstr "&Espacio" - -msgid "C&reate" -msgstr "Crear" +msgid "Space" +msgstr "Espacio" msgid "South European Latin-3 (ISO-8859-3)" msgstr "Sur de Europa Latín-3 (ISO-8859-3)" @@ -486,18 +558,12 @@ msgstr "DBF Viewer 0.8 (Julio 29, 2011)" msgid "3 Iteration" msgstr "Iteración 3" -msgid "File" -msgstr "Archivo" - msgid "Apply" msgstr "Aplicar" msgid "Map Themes" msgstr "Temas de Mapa" -msgid "Regression" -msgstr "Regresión" - msgid "499 Permutations" msgstr "499 Permutaciones" @@ -540,9 +606,6 @@ msgstr "Contornos Visibles" msgid "Change Map Transparency" msgstr "Cambiar Transparencia del Mapa" -msgid "&Explore" -msgstr "&Explorar" - msgid "Number of Categories" msgstr "Número de Categorías" @@ -555,9 +618,6 @@ msgstr "Nuevo archivo de proyecto" msgid "Save Table As CSV File" msgstr "Guardar Tabla como CSV" -msgid "&New" -msgstr "&Nuevo" - msgid "year:" msgstr "año" @@ -639,9 +699,6 @@ msgstr "Tasa Cruda" msgid "Save Connectivity To Table" msgstr "Guardar Conectividad a Tabla" -msgid "Save" -msgstr "Guardar" - msgid "Panning Mode" msgstr "Modo Arrastrado" @@ -801,8 +858,8 @@ msgstr "Cortes Intervalos Verticales" msgid "Zoom Out" msgstr "Zoom -" -msgid "&Help" -msgstr "&Ayuda" +msgid "Help" +msgstr "Ayuda" msgid "Append To Current Selection" msgstr "Anexar a Selección Actual" @@ -831,9 +888,6 @@ msgstr "Configuración de Variable" msgid "Connect" msgstr "Conectar" -msgid "Cancel" -msgstr "Cancelar" - msgid "observation:" msgstr "observación" @@ -843,7 +897,7 @@ msgstr "Variables" msgid "Geography Markup Language (*.gml)|*.gml" msgstr "Lenguaje de Marcado Geográfico (*.gml)|*.gml" -msgid "Re&set" +msgid "Reset" msgstr "Borrar" msgid "Grouped Variables" @@ -864,9 +918,6 @@ msgstr "Tipo 1" msgid "Animation" msgstr "Animación" -msgid "&Run" -msgstr "&Ejecutar" - msgid "Clusters" msgstr "Clúster" @@ -924,9 +975,6 @@ msgstr "Nombre usuario" msgid "min:" msgstr "mín." -msgid "Appl&y" -msgstr "Aplicar" - msgid "Queen contiguity" msgstr "Contigüidad Reina" @@ -945,9 +993,6 @@ msgstr "Escala fija en el tiempo" msgid "Greek (ISO-8859-7)" msgstr "Griego (ISO-8859-7)" -msgid "&Close" -msgstr "Cerrar" - msgid "Change Edge Thickness" msgstr "Cambiar Grosor del Borde" @@ -1095,7 +1140,7 @@ msgstr "Crear" msgid "K Medoids" msgstr "K Medoids" -msgid "&Regression" +msgid "Regression" msgstr "Regresión" msgid "Show As Conditional Map" @@ -1161,8 +1206,8 @@ msgstr "Eliminar Variable(s)" msgid "Intervals in the Histogram" msgstr "Intervalos en el Histograma" -msgid "&Cancel" -msgstr "&Cancelar" +msgid "Cancel" +msgstr "Cancelar" msgid "Get a free GeoDa-Web account: " msgstr "Obtener una cuenta de GeoDa-Web gratis" @@ -1173,8 +1218,8 @@ msgstr "Mapa de Cuantiles" msgid "Bubble Chart" msgstr "Gráfico de Burbujas" -msgid "&File" -msgstr "&Archivo" +msgid "File" +msgstr "Archivo" msgid "Yes" msgstr "Sí" @@ -1182,7 +1227,7 @@ msgstr "Sí" msgid "Significance Filter" msgstr "" -msgid "T&able" +msgid "Table" msgstr "Tabla" msgid "using row-standardized weights" @@ -1299,8 +1344,8 @@ msgstr "G Local" msgid "Upper-right corner" msgstr "Esquina superior derecha" -msgid "&Save to Table" -msgstr "&Guardar en Tabla" +msgid "Save to Table" +msgstr "Guardar en Tabla" msgid "Spatial Rate" msgstr "Tasa Espacial" @@ -1320,9 +1365,6 @@ msgstr "Fuente de Datos de Entrada" msgid "Max value of Y axis" msgstr "Valor Máx. del eje Y" -msgid "&Map" -msgstr "&Mapa" - msgid "binary" msgstr "binario" @@ -1389,9 +1431,6 @@ msgstr "Añadir Vecinos a Selección" msgid "Rename Variable" msgstr "Renombrar Variable" -msgid "Table" -msgstr "Tabla" - msgid "Variable Name" msgstr "Nombre de la Variable" @@ -1407,9 +1446,6 @@ msgstr "Invertir Selección" msgid "X-coordinate" msgstr "coordenada-X" -msgid "&Edit" -msgstr "&Editar" - msgid "X Variable" msgstr "Variable X" @@ -1455,11 +1491,8 @@ msgstr "Valores Individuales" msgid "Clean Basemap Cache" msgstr "Borrar Mapa Base de Caché" -msgid "&Add ID Variable..." -msgstr "&Añadir Variable ID" - -msgid "Reset" -msgstr "Borrar" +msgid "Add ID Variable..." +msgstr "Añadir Variable ID" msgid "Input file " msgstr "Abrir Archivo" @@ -1485,8 +1518,8 @@ msgstr "Añadir/Eliminar Variables" msgid "OK" msgstr "Aceptar" -msgid "&Open Project" -msgstr "&Abrir Proyecto" +msgid "Open Project" +msgstr "Abrir Proyecto" msgid "Save Space-Time Table/Weights" msgstr "Guardar Tabla Espacio-Tiempo/pesos" @@ -1608,8 +1641,8 @@ msgstr "Qué ventana abrir" msgid "Get a free Nokia/HERE account: " msgstr "Obtener una cuenta gratis de Nokia/HERE" -msgid "&Merge" -msgstr "&Combinar" +msgid "Merge" +msgstr "Combinar" msgid "First line of CSV is variable names?" msgstr "¿Primera Línea de CSV esn nombre de variables?" @@ -1689,9 +1722,6 @@ msgstr "Color de Fondo" msgid "Axis Selection" msgstr "Selección de Eje" -msgid "Tim&e" -msgstr "Tiempo" - msgid "Set Display Precision:" msgstr "Mostrar Pantalla de Precisión" @@ -1851,9 +1881,6 @@ msgstr "Añadir Nueva Variable ID" msgid "Rates-Calculated Maps" msgstr "Mapas de Ratios Calculados" -msgid "Merge" -msgstr "Combinar" - msgid "Color" msgstr "Color" @@ -2094,11 +2121,11 @@ msgstr "En GdaMarco::OnCheckTestMode():" msgid "Conditional Local Geary Map Variables" msgstr "Variables del Mapa de Geary Local Condicional" -msgid "&Undo" -msgstr "&Deshacer" +msgid "Undo" +msgstr "Deshacer" -msgid "&Paste" -msgstr "&Pegar" +msgid "Paste" +msgstr "Pegar" msgid "Save Details" msgstr "Guardar Detalles" @@ -2163,8 +2190,8 @@ msgstr "Añadir\\/Eliminar Variables" msgid "First Variable (X)" msgstr "Primera Variable (X)" -msgid "&Save" -msgstr "&Guardar" +msgid "Save" +msgstr "Guardar" msgid "Please input user name." msgstr "Introducir nombre de usuario." @@ -2718,8 +2745,8 @@ msgstr "Nuevo nombre de variable" msgid "The sample size for random sampling is too small.\n" msgstr "Tamaño de la muestra para muestreo aleatorio demasiado pequeño.\n" -msgid "Select &All" -msgstr "Seleccionar &Todo" +msgid "Select All" +msgstr "Seleccionar Todo" msgid "Warning" msgstr "Aviso" @@ -2874,9 +2901,6 @@ msgstr "Afinidad con K-NN:" msgid "Nokia\\/HERE App ID" msgstr "Nokia\\/HERE App ID" -msgid "Help" -msgstr "Ayuda" - msgid "Please select features first." msgstr "Seleccionar 1º las características." @@ -3138,8 +3162,8 @@ msgstr "Ocultar tabla de sistema en conexión de Postgresql:" msgid "Plots:" msgstr "Gráficos:" -msgid "Cu&t" -msgstr "Cortar&" +msgid "Cut" +msgstr "Cortar" msgid "Please enter number of regions" msgstr "Introducir nº de regiones" @@ -3351,8 +3375,8 @@ msgstr "Introducir valor de semilla" msgid "The selected database driver is not supported on this platform. Please check GeoDa website for more information about database support and connection." msgstr "Controlador de base de datos seleccionado no admitido en esta plataforma. Consulte la web de GeoDa para más información sobre bases de datos y conexiones admitidas." -msgid "&Copy" -msgstr "&Copiar" +msgid "Copy" +msgstr "Copiar" msgid " and " msgstr " y " @@ -3525,7 +3549,7 @@ msgstr "Al seleccionar \"todos los períodos\", el campo de resultados debe ser msgid "Please input Carto User Name." msgstr "Introducir Nombre de Usuario de Carto." -msgid "E&xplore" +msgid "Explore" msgstr "Explorar" msgid "Thank you for helping us improve GeoDa with your bug report! \n" @@ -3672,9 +3696,6 @@ msgstr "Transformación:" msgid "Other Positive" msgstr "Otro Positivo" -msgid "&Delete" -msgstr "&Borrar" - msgid "Sample Autocorrelation" msgstr "Autocorrelación muestral" @@ -3756,8 +3777,8 @@ msgstr "La clave especificada (%s) no se encuentra en la Tabla activa" msgid "The selected variable is not numeric. Please select another variable." msgstr "La variable seleccionada no es numérica. Seleccionar otra variable." -msgid "&Redo" -msgstr "&Repetir" +msgid "Redo" +msgstr "Repetir" msgid "Your table cannot be aggregated because the key field \"%s\" is unique. Please use another key." msgstr "Imposible agregar tabla porque el campo clave \"%s\" es único. Utilizar otro campo clave." @@ -3854,3 +3875,93 @@ msgstr "Guardar Como Fuente Datos" msgid "The number of identified clusters is less than " msgstr "El nº de clústers identificados es menor que " + +msgid "Add Map Layer" +msgstr "Add Map Layer" + +msgid "Edit Map Layer" +msgstr "Edit Map Layer" + +msgid "Map Layer Setting" +msgstr "Map Layer Setting" + +msgid "Set Highlight Association" +msgstr "Set Highlight Association" + +msgid "Clear Highlight Association" +msgstr "Clear Highlight Association" + +msgid "Change Fill Color" +msgstr "Change Fill Color" + +msgid "Change Outline Color" +msgstr "Change Outline Color" + +msgid "Outline Visible" +msgstr "Outline Visible" + +msgid "Only Map Boundary" +msgstr "Only Map Boundary" + +msgid "Change Point Radius" +msgstr "Change Point Radius" + +msgid "Set Association Dialog" +msgstr "Set Association Dialog" + +msgid "Select layer" +msgstr "Select layer" + +msgid "and field" +msgstr "and field" + +msgid "is associated to" +msgstr "is associated to" + +msgid "in current layer." +msgstr "in current layer." + +msgid "Show connect line" +msgstr "Show connect line" + +msgid "Point Radius:" +msgstr "Point Radius:" + +msgid "Map Layout Preview" +msgstr "Map Layout Preview" + +msgid "Show Legend" +msgstr "Show Legend" + +msgid "Use Transparent Legend Background" +msgstr "Use Transparent Legend Background" + +msgid "Image Dimension Setting" +msgstr "Image Dimension Setting" + +msgid "Width:" +msgstr "Width:" + +msgid "Height:" +msgstr "Height:" + +msgid "Resolution(dpi):" +msgstr "Resolution(dpi):" + +msgid "pixels" +msgstr "pixels" + +msgid "inches" +msgstr "inches" + +msgid "mm" +msgstr "mm" + +msgid "Basemap Sources: (Format: group_name.basemap_name,basemap_url)" +msgstr "Basemap Sources: (Format: group_name.basemap_name,basemap_url)" + +msgid "Basemap Parameters:" +msgstr "Basemap Parameters:" + +msgid "Multivariate Local Join Count" +msgstr "Multivariate Local Join Count" diff --git a/internationalization/pofiles/zh_CN.po b/internationalization/pofiles/zh_CN.po index 3b5a6cd83..bbdcfd27c 100644 --- a/internationalization/pofiles/zh_CN.po +++ b/internationalization/pofiles/zh_CN.po @@ -2,19 +2,106 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: 2018-04-26 14:58+0800\n" -"PO-Revision-Date: 2018-06-04 09:30+0800\n" +"PO-Revision-Date: 2018-09-27 11:57-0700\n" "Last-Translator: \n" "Language-Team: \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.7\n" +"X-Generator: Poedit 2.1.1\n" "X-Poedit-Basepath: Regression\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Poedit-KeywordsList: _;wxT\n" "X-Poedit-SearchPath-0: .\n" +msgid "&Undo" +msgstr "撤销" + +msgid "&Paste" +msgstr "粘贴" + +msgid "&Space" +msgstr "空间分析" + +msgid "Re&set" +msgstr "重置" + +msgid "&Run" +msgstr "运行" + +msgid "&Save" +msgstr "保存" + +msgid "&Help" +msgstr "帮助" + +msgid "&Add ID Variable..." +msgstr "添加ID变量…" + +msgid "Appl&y" +msgstr "应用" + +msgid "&File" +msgstr "文件" + +msgid "&New" +msgstr "新建" + +msgid "&Save to Table" +msgstr "保存到表" + +msgid "Select &All" +msgstr "全选" + +msgid "&Map" +msgstr "地图" + +msgid "&Regression" +msgstr "回归" + +msgid "Cu&t" +msgstr "剪切" + +msgid "&Open Project" +msgstr "打开项目文件" + +msgid "&Close" +msgstr "关闭" + +msgid "&Edit" +msgstr "编辑" + +msgid "&Copy" +msgstr "复制" + +msgid "C&reate" +msgstr "创建" + +msgid "E&xplore" +msgstr "探索分析" + +msgid "T&able" +msgstr "表格" + +msgid "&Tools" +msgstr "工具" + +msgid "Tim&e" +msgstr "时间编辑" + +msgid "&Delete" +msgstr "删除" + +msgid "&Cancel" +msgstr "取消" + +msgid "&Merge" +msgstr "合并" + +msgid "&Redo" +msgstr "重做" + msgid "ESRI Personal Geodatabase (*.mdb)|*.mdb" msgstr "ESRI个人地理数据库(*.MDB)**MDB" @@ -414,15 +501,12 @@ msgstr "保存项目" msgid "Conditional Local Geary Map Variables" msgstr "条件局部Geary地图变量" -msgid "&Undo" +msgid "Undo" msgstr "撤销" -msgid "&Paste" +msgid "Paste" msgstr "粘贴" -msgid "Reset" -msgstr "重置" - msgid "min:" msgstr "最小值:" @@ -519,9 +603,6 @@ msgstr "操作符" msgid "This file type is not supported." msgstr "文件类型不支持。" -msgid "&Space" -msgstr "空间分析" - msgid "Space" msgstr "空间分析" @@ -540,7 +621,7 @@ msgstr "此视图目前支持最多1000个观察对象。空间 Correlogram 散 msgid "CSV Configuration Warning" msgstr "CSV配置警告" -msgid "Re&set" +msgid "Reset" msgstr "重置" msgid "All" @@ -597,16 +678,13 @@ msgstr "当前加载的表中找未到指定的ID字段(%s)。" msgid "Select Neighborless Observations" msgstr "选择无邻居的对象" -msgid "Delete" -msgstr "删除" - msgid "Histogram: " msgstr "直方图: " msgid "Korean (EUC-KR)" msgstr "韩语(EUC-KR)" -msgid "&Run" +msgid "Run" msgstr "运行" msgid "Add/Remove Variables" @@ -615,7 +693,7 @@ msgstr "添加/删除变量" msgid "First Variable (X)" msgstr "第一变量(X)" -msgid "&Save" +msgid "Save" msgstr "保存" msgid "name:" @@ -654,7 +732,7 @@ msgstr "设置数字分隔符" msgid "Not Significant" msgstr "不显著" -msgid "&Help" +msgid "Help" msgstr "帮助" msgid "Welcome to GeoDa 1.8.16" @@ -681,7 +759,7 @@ msgstr "请先选择时段1。" msgid "Spatial Lag" msgstr "空间滞后模型" -msgid "&Add ID Variable..." +msgid "Add ID Variable..." msgstr "添加ID变量…" msgid "id variable" @@ -1518,9 +1596,6 @@ msgstr "条件局部Join Count地图" msgid "Save Selected As" msgstr "保存选中的为" -msgid "Appl&y" -msgstr "应用" - msgid "" "Add a name for your group of variables. \n" "\n" @@ -1572,9 +1647,6 @@ msgstr "变量名 \"%s\" 重复或无效。请重新输入一个其他变量名 msgid "GeoDa does not support creating data of %s. Please try to 'Export' to other supported data source format." msgstr "GeoDa不支持创建%s的数据,请尝试将其导出为其他GeoDa支持的数据格式。" -msgid "&File" -msgstr "文件" - msgid "Bonferroni bound:" msgstr "Bonferroni界限:" @@ -1635,7 +1707,7 @@ msgstr "缩放:按鼠标右键" msgid "Summary" msgstr "总结报告" -msgid "&New" +msgid "New" msgstr "新建" msgid "Weights File Creation" @@ -1867,7 +1939,7 @@ msgstr "ESRI Shapefile (*.shp)|*.shp" msgid "New variable name" msgstr "新的变量名" -msgid "&Save to Table" +msgid "Save to Table" msgstr "保存到表" msgid "Reverse" @@ -1881,7 +1953,7 @@ msgid "" "Please increase the number of iterations." msgstr "随机抽样的样本数太小。请增加迭代次数。" -msgid "Select &All" +msgid "Select All" msgstr "全选" msgid "Warning" @@ -1947,7 +2019,7 @@ msgstr "显示小数点位数" msgid "Voronoi Contiguity Error" msgstr "泰森多边形有邻接性错误" -msgid "&Map" +msgid "Map" msgstr "地图" msgid "Set transparency of highlighted objects in selection:" @@ -2145,15 +2217,9 @@ msgstr "年:" msgid "standard deviation" msgstr "标准差" -msgid "Help" -msgstr "帮助" - msgid "Exit" msgstr "退出" -msgid "Run" -msgstr "运行" - msgid "Please select features first." msgstr "请首先选择需要导出的对象." @@ -2268,9 +2334,6 @@ msgstr "邻居数" msgid "neighbors" msgstr "邻居数" -msgid "&Regression" -msgstr "回归" - msgid "Use existing field name" msgstr "使用现有字段名" @@ -2652,9 +2715,6 @@ msgstr "行数错误!" msgid "REDCAP Settings" msgstr "REDCAP设置" -msgid "Map" -msgstr "地图" - msgid "Fit-To-Window Mode" msgstr "窗口匹配模式" @@ -2796,7 +2856,7 @@ msgstr "多变量局部Geary" msgid "Dependent Variable" msgstr "因变量" -msgid "Cu&t" +msgid "Cut" msgstr "剪切" msgid "Please enter number of regions" @@ -2841,7 +2901,7 @@ msgstr "整数值字段的长度必须至少为%d, 最多为%d。" msgid "Creating Grid" msgstr "创建网格" -msgid "&Open Project" +msgid "Open Project" msgstr "打开项目文件" msgid "ID_DEFAULT_MENU_OPTIONS" @@ -2916,9 +2976,6 @@ msgstr "Web" msgid "Time Variable Options" msgstr "时间变量选项" -msgid "New" -msgstr "新建" - msgid "About GeoDa" msgstr "关于GeoDa" @@ -2997,9 +3054,6 @@ msgstr "保存Diff-in-Diff测试结果" msgid "Selection Shape" msgstr "选择形状" -msgid "&Close" -msgstr "关闭" - msgid "GeoDa could not find the required weights file." msgstr "GeoDa找不到所需的空间权重文件。" @@ -3026,9 +3080,6 @@ msgstr "请输入Carto App密钥。" msgid "custom" msgstr "自定义" -msgid "&Edit" -msgstr "编辑" - msgid "Setup co-locations:" msgstr "设置相同值叠加地图:" @@ -3221,9 +3272,6 @@ msgstr "输入一个用于生成随机数的种子:" msgid "The selected database driver is not supported on this platform. Please check GeoDa website for more information about database support and connection." msgstr "此平台不支持所选的数据库驱动程序。请查看GeoDa网站以获取关于数据库支持和连接的更多信息。" -msgid "&Copy" -msgstr "复制" - msgid "Regression Report" msgstr "回归分析报告" @@ -3335,9 +3383,6 @@ msgstr "无法写入输出文件!" msgid "Geocode Setting Dialog" msgstr "地理编码设置对话框" -msgid "C&reate" -msgstr "创建" - msgid "Add New ID Variable" msgstr "添加新ID变量" @@ -3714,9 +3759,6 @@ msgstr "将项目文件保存为" msgid "Vietnamese (Windows-1258)" msgstr "越南语(Windows 1258)" -msgid "E&xplore" -msgstr "探索分析" - msgid "Explore" msgstr "探索分析" @@ -3759,9 +3801,6 @@ msgstr "超额风险度(Excess Risk)" msgid "Hebrew (ISO-8859-8-1)" msgstr "希伯来语(ISO-8598-1)" -msgid "T&able" -msgstr "表格" - msgid ">" msgstr ">" @@ -3836,9 +3875,6 @@ msgstr "项目文件包含不直接存储在数据源中的额外信息, 例如 msgid "Open Datasource:" msgstr "打开数据源:" -msgid "&Tools" -msgstr "工具" - msgid "Tools" msgstr "工具" @@ -3877,9 +3913,6 @@ msgstr "" msgid "Save Categories to Table" msgstr "将自定义分类保存到表中" -msgid "Tim&e" -msgstr "时间编辑" - msgid "Bivariate Moran Variable Settings" msgstr "二元Moran变量设置" @@ -4051,7 +4084,7 @@ msgstr "其他正相关" msgid "Chinese Simplified (GB2312)" msgstr "中文简化版(GB23 12)" -msgid "&Delete" +msgid "Delete" msgstr "删除" msgid "Sample Autocorrelation" @@ -4117,9 +4150,6 @@ msgstr "条件G聚类地图变量" msgid "Please setup co-locations first." msgstr "请先设置Co-location。" -msgid "&Cancel" -msgstr "取消" - msgid "Specify bandwidth" msgstr "指定带宽" @@ -4180,9 +4210,6 @@ msgstr "数据类型" msgid "When \"all times\" selected for variable, result field must also be \"all times.\"" msgstr "当选择变量的时间为“all times”时, 保存结果的字段也必须选“all times”." -msgid "&Merge" -msgstr "合并" - msgid "calculating..." msgstr "计算中…" @@ -4225,7 +4252,7 @@ msgstr "保存泰森多边形" msgid "The selected variable is not numeric. Please select another variable." msgstr "所选变量不是数值类型,请选择其他变量。" -msgid "&Redo" +msgid "Redo" msgstr "重做" msgid "Your table cannot be aggregated because the key field \"%s\" is unique. Please use another key." @@ -4300,9 +4327,6 @@ msgstr "保存回归结果" msgid "Please select a time variable first, and make sure more than one time steps have been defined." msgstr "请首先选择一个时间变量, 并确保已定义了多个时间步长。" -msgid "Save" -msgstr "保存" - msgid "Read from an ASCII file" msgstr "从ASCII文件中读取" @@ -4542,3 +4566,93 @@ msgstr "属性" msgid "Value" msgstr "值" + +msgid "Add Map Layer" +msgstr "Add Map Layer" + +msgid "Edit Map Layer" +msgstr "Edit Map Layer" + +msgid "Map Layer Setting" +msgstr "Map Layer Setting" + +msgid "Set Highlight Association" +msgstr "Set Highlight Association" + +msgid "Clear Highlight Association" +msgstr "Clear Highlight Association" + +msgid "Change Fill Color" +msgstr "Change Fill Color" + +msgid "Change Outline Color" +msgstr "Change Outline Color" + +msgid "Outline Visible" +msgstr "Outline Visible" + +msgid "Only Map Boundary" +msgstr "Only Map Boundary" + +msgid "Change Point Radius" +msgstr "Change Point Radius" + +msgid "Set Association Dialog" +msgstr "Set Association Dialog" + +msgid "Select layer" +msgstr "Select layer" + +msgid "and field" +msgstr "and field" + +msgid "is associated to" +msgstr "is associated to" + +msgid "in current layer." +msgstr "in current layer." + +msgid "Show connect line" +msgstr "Show connect line" + +msgid "Point Radius:" +msgstr "Point Radius:" + +msgid "Map Layout Preview" +msgstr "Map Layout Preview" + +msgid "Show Legend" +msgstr "Show Legend" + +msgid "Use Transparent Legend Background" +msgstr "Use Transparent Legend Background" + +msgid "Image Dimension Setting" +msgstr "Image Dimension Setting" + +msgid "Width:" +msgstr "Width:" + +msgid "Height:" +msgstr "Height:" + +msgid "Resolution(dpi):" +msgstr "Resolution(dpi):" + +msgid "pixels" +msgstr "pixels" + +msgid "inches" +msgstr "inches" + +msgid "mm" +msgstr "mm" + +msgid "Basemap Sources: (Format: group_name.basemap_name,basemap_url)" +msgstr "Basemap Sources: (Format: group_name.basemap_name,basemap_url)" + +msgid "Basemap Parameters:" +msgstr "Basemap Parameters:" + +msgid "Multivariate Local Join Count" +msgstr "Multivariate Local Join Count" diff --git a/ogl/bmpshape.cpp b/ogl/bmpshape.cpp index 76e833a73..1ff0bbd5a 100644 --- a/ogl/bmpshape.cpp +++ b/ogl/bmpshape.cpp @@ -198,7 +198,6 @@ void wxBitmapShape::SetCanvas(TemplateLegend* _tlegend) m_imgmap.Destroy(); m_imgmap = bm.ConvertToImage(); - SetSize(legend_width, legend_height); } } diff --git a/version.h b/version.h index 9b4f2fc0a..9c2f1227b 100644 --- a/version.h +++ b/version.h @@ -2,10 +2,10 @@ namespace Gda { const int version_major = 1; const int version_minor = 12; const int version_build = 1; - const int version_subbuild = 165; + const int version_subbuild = 167; const int version_year = 2018; - const int version_month = 9; - const int version_day = 25; + const int version_month = 10; + const int version_day = 1; const int version_night = 0; const int version_type = 2; // 0: alpha, 1: beta, 2: release }