Первый коммит

This commit is contained in:
Igor I
2023-11-06 13:50:17 +06:00
commit 5fa2fe0d57
295 changed files with 65554 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,408 @@
package kz.locust.CCALM;
import java.io.BufferedReader;
import java.io.File;
//import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
//import java.io.OutputStream;
//import java.io.UnsupportedEncodingException;
//import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//import java.util.zip.CRC32;
//import java.util.zip.Checksum;
import javax.servlet.ServletContext;
//import javax.servlet.http.Part;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.springframework.core.io.ClassPathResource;
//import org.apache.commons.io.FileUtils;
//import org.springframework.core.io.FileSystemResource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
//import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.multipart.MultipartFile;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import tools.User;
@Controller
public class AcceptEXCEL implements ServletContextAware {
private ServletContext context;
@Override
public void setServletContext(ServletContext context) {
this.context=context;
}
@RequestMapping(value = "/AcceptCSV", method = { RequestMethod.GET, RequestMethod.POST })
public String acceptCSV(@ModelAttribute User user, Model model,@RequestParam(required=false,name="file") MultipartFile file,@RequestParam(required=false,name="skip",defaultValue = "0") Boolean skip) {
String db_url="";
String db_login="";
String db_password="";
//Load DB configuration from "config.xml"
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
e.printStackTrace();
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
} catch (Exception ex) {
}
String sqlData="";
String json="{\"type\": \"FeatureCollection\",\"features\":[";
String table="<table border=\"1\">";
table+="<tr style=\"background-color: #e0e0e0;\"><th>№</th><th>Latitude (Широта)</th><th>Longitude (Долгота)</th><th>Oblast (область)</th><th>District (Район)</th><th>Сельский округ</th><th>Хозяйство или местность</th><th>Вид саранчи</th><th>Фаза</th><th>ЭПВ</th><th>Заселено Га</th><th>Дата</th></tr>";
//row+="<td>"+i+"</td><td>"+locust.lat+"</td><td>"+locust.lon+"</td><td>"+locust.region+" = "+locust.region_id+"</td><td>"+locust.district+" = "+locust.district_id+"</td><td>"+locust.terrain+"</td><td>"+locust.village+"<td>";
if (file!=null && !file.isEmpty()) {
BufferedReader reader;
try {
int i=1; //for testing
reader = new BufferedReader(new InputStreamReader(file.getInputStream(), "UTF-8"));
//reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
if(skip) line = reader.readLine();
while (line != null) {
StringBuffer data=new StringBuffer(line);
Boolean error=false;
Locust locust = new Locust();
try {
String lat=CutBeforeFirst(data,";");
if(lat.equals("46.3104.6")) lat="46.31046";
if(lat.equals("43.21303.")) lat="43.21303";
if(lat.equals("43.26067.")) lat="43.26067";
if(lat.equals("43.20181.")) lat="43.20181";
if(lat.equals("43.20181.")) lat="43.20181";
if(lat.equals("43.74691.")) lat="43.74691";
if(lat.equals("43.41954.")) lat="43.41954";
if(lat.equals("43.78288.")) lat="43.78288";
if(lat.equals("43.26260.")) lat="43.26260";
if(lat.equals("43.79702.")) lat="43.79702";
if(lat.equals("43.64891.")) lat="43.64891";
if(lat.equals("43.64891.")) lat="43.64891";
if(lat.equals("43.42271.")) lat="43.42271";
if(lat.equals("43.64891.")) lat="43.64891";
if(lat.equals("43.89990.")) lat="43.89990";
if(lat.equals("43.96273.")) lat="43.96273";
if(lat.equals("43.26907.")) lat="43.26907";
if(lat.equals("43.26630.")) lat="43.26630";
if(lat.equals("43.50605.")) lat="43.50605";
if(lat.equals("43.74965.")) lat="43.74965";
if(lat.equals("43.20813.")) lat="43.20813";
if(lat.equals("43.23298.")) lat="43.23298";
if(lat.equals("43.74774.")) lat="43.74774";
if(lat.equals("43.77144.")) lat="43.77144";
if(lat.equals("43.58847.")) lat="43.58847";
if(lat.equals("43.58944.")) lat="43.58944";
if(lat.equals("4342755.")) lat="43.42755";
if(lat.equals("43.80416.")) lat="43.80416";
if(lat.equals("43.79536.")) lat="43.79536";
if(lat.equals("50.75 767")) lat="50.75767";
if(lat.equals("50.77 542")) lat="50.77542";
if(lat.equals("50.85 140")) lat="50.85140";
if(lat.equals("50.79 773")) lat="50.79773";
if(lat.equals("50.63 469")) lat="50.63469";
if(lat.equals("51.23 130")) lat="51.23130";
if(lat.equals("51.03 220")) lat="51.03220";
if(lat.equals("51.38 922")) lat="51.38922";
if(lat.equals("51.06.940")) lat="51.06940";
if(lat.equals("51.08 273")) lat="51.08273";
if(lat.equals("50.96 705")) lat="50.96705";
if(lat.equals("51.03 021")) lat="51.03021";
if(lat.equals("51.01 764")) lat="51.01764";
if(lat.equals("50.99 388")) lat="50.99388";
if(lat.equals("50.50 509")) lat="50.50509";
if(lat.equals("43.109.94")) lat="43.10994";
if(lat.equals("50.11.926")) lat="50.11926";
if(lat.equals("50.04.966")) lat="50.04966";
if(lat.equals("49.26.385")) lat="49.26385";
if(lat.equals("49.26.251")) lat="49.26251";
if(lat.equals("49.25.307")) lat="49.25307";
if(lat.equals("44.4930.")) lat="49.25307";
locust.lat=Double.parseDouble(lat);
String lon=CutBeforeFirst(data,";");
if(lon.equals("51.25 560")) lon="51.25560";
if(lon.equals("51.25 099")) lon="51.25099";
if(lon.equals("51.26 378")) lon="51.26378";
if(lon.equals("51.25 235")) lon="51.25235";
if(lon.equals("51.83 107")) lon="51.83107";
if(lon.equals("51.71 702")) lon="51.71702";
if(lon.equals("52.21 390")) lon="52.21390";
if(lon.equals("52.10 873")) lon="52.10873";
if(lon.equals("51.85 606")) lon="51.85606";
if(lon.equals("52.41 085")) lon="52.41085";
if(lon.equals("52.36 125")) lon="52.36125";
if(lon.equals("51. 56 025")) lon="51.56025";
if(lon.equals("51.56 786")) lon="51.56786";
if(lon.equals("51.57 946")) lon="51.57946";
if(lon.equals("51.16 758")) lon="51.16758";
if(lon.equals("85.09.142")) lon="85.09142";
locust.lon=Double.parseDouble(lon);
}catch(Exception ex)
{
error=true;
}
locust.region=CutBeforeFirst(data,";");
//Выбираю ID области
Statement stt = null;
ResultSet rs = null;
try {
if(locust.region.equals("Алматинский")) locust.region="Алматинская";
if(locust.region.equals("Туркестанский")) locust.region="Туркестанская";
stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String sql_query = "select id from main.countriesregions where name like '%"+locust.region+"%';";
rs = stt.executeQuery(sql_query);
if (rs != null) {
try {
if (rs.next()) {
locust.region_id=rs.getString(1);
}
rs.close();
} catch (SQLException ex) {
}
}
} catch (SQLException ex) {
}finally {
if(rs!=null) try{rs.close();}catch(SQLException ex){}
if(stt!=null) try{stt.close();}catch(SQLException ex){}
}
//Выбираю id региона (main.countriesdistricts)
locust.district_id="";
locust.district=CutBeforeFirst(data,";");
stt = null;
rs = null;
try {
if(locust.district.equals("Сарканский ")) locust.district="Саркандский";
if(locust.district.equals("Уйгуский")) locust.district="Уйгурский";
if(locust.district.equals("г.Капшагай")) locust.district="Капчагайский городской округ";
if(locust.district.equals("Каратальскиий")) locust.district="Каратальский";
if(locust.district.equals("г. Талдыкорган")) locust.district="Талдыкорганский";
if(locust.district.equals("г Атырау ")) locust.district="Атырауский городской округ";
if(locust.district.equals("г. Атырау")) locust.district="Атырауский городской округ";
if(locust.district.equals("Кызылкуга")) locust.district="Кзылкогинский район";
if(locust.district.equals("Курчумский ")) locust.district="Куршимский район";
if(locust.district.equals("г.Семей")) locust.district="Семипалатинский городской округ";
if(locust.region_id.equals("4") && locust.district.equals("Жамбылский")) locust.district="Джамбулский район";
if(locust.district.equals("Т.Рыскуловский")) locust.district="Рыскуловский район";
if(locust.district.equals("Шуйский")) locust.district="Чуйский район";
if(locust.district.equals("Сарысуский")) locust.district="Сары-Суйский район";
if(locust.district.equals("Федоровский")) locust.district="Фёдоровский район";
if(locust.district.equals("Жангельдинский")) locust.district="Джангельдинский район";
if(locust.district.equals("Сырдария")) locust.district="Сырдарьинский район";
if(locust.district.equals("Кызылорда")) locust.district="Кызылординский городской округ";
if(locust.district.equals("к.Кызылорда")) locust.district="Кызылординский городской округ";
if(locust.district.equals("Аралский")) locust.district="Аральский район";
if(locust.district.equals("Шиелі")) locust.district="Шиелийский район";
if(locust.region_id.equals("11") && locust.district.equals("Аксуский")) locust.district="Аксуйский городской округ";
if(locust.region_id.equals("11") && locust.district.equals("Аксуский")) locust.district="Аксуйский городской округ";
if(locust.region_id.equals("11") && locust.district.equals("Ақсуский")) locust.district="Аксуйский городской округ";
if(locust.district.equals("Аққулы")) locust.district="Аккулинский район";
if(locust.district.equals("Аккулы")) locust.district="Аккулинский район";
if(locust.district.equals("Тереңкөл")) locust.district="Теренкольский";
if(locust.district.equals("г. Павлодар")) locust.district="Павлодарский городской округ";
if(locust.district.equals("Екибастузский")) locust.district="Экибастузский городской округ";
if(locust.district.equals("Шербактнский")) locust.district="Щербактинский район";
if(locust.district.equals("Толебиский ")) locust.district="Толебийский район";
if(locust.district.equals("г.Шымкент Абайский ")) locust.district="Шымкентский городской округ";
if(locust.district.equals("г.Шымкент Каратауский ")) locust.district="Шымкентский городской округ";
if(locust.district.equals("Баянауыл")) locust.district="Баянаул";
if(locust.district.equals("Екібастұз")) locust.district="Экибастуз";
stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String sql_query = "select id from main.countriesdistricts where region_id="+locust.region_id+" and name like '%"+locust.district+"%';";
rs = stt.executeQuery(sql_query);
if (rs != null) {
try {
if (rs.next()) {
locust.district_id=rs.getString(1);
}
rs.close();
} catch (SQLException ex) {
}
}
} catch (SQLException ex) {
}finally {
if(rs!=null) try{rs.close();}catch(SQLException ex){}
if(stt!=null) try{stt.close();}catch(SQLException ex){}
}
//Сельский округ
locust.terrain=CutBeforeFirst(data,";");
//Хозяйство или местность
locust.village=CutBeforeFirst(data,";");
//Вид саранчи
locust.locust=CutBeforeFirst(data,";");
locust.locust_id="";
if(locust.locust.equals(" итальянский прус")) locust.locust_id="1";
if(locust.locust.equals("итальянский прус")) locust.locust_id="1";
if(locust.locust.equals("Итальянский прус")) locust.locust_id="1";
if(locust.locust.equals("итальянский прус ")) locust.locust_id="1";
if(locust.locust.equals("Азиатская саранча")) locust.locust_id="3";
if(locust.locust.equals("азиатская саранча")) locust.locust_id="3";
if(locust.locust.equals("нестадные")) locust.locust_id="4";
if(locust.locust.equals("нестадные саранчовые")) locust.locust_id="4";
if(locust.locust.equals("Нестадные саранчевые")) locust.locust_id="4";
if(locust.locust.equals("Нестадная саранча ")) locust.locust_id="4";
if(locust.locust.equals("Нестадная саранча")) locust.locust_id="4";
if(locust.locust.equals("нестадная саранча")) locust.locust_id="4";
if(locust.locust.equals("Мароккская саранча")) locust.locust_id="2";
//фаза саранчи
locust.phase=CutBeforeFirst(data,";");
locust.locust_have="3";
if(locust.phase.equals("кубышки")) locust.locust_have="2";
if(locust.phase.equals("личинки")) locust.locust_have="3";
if(locust.phase.equals("имаго")) locust.locust_have="5";
locust.evp=CutBeforeFirst(data,";"); //ЭФП
locust.size=CutBeforeFirst(data,";"); //Заселённая площадь
locust.size=locust.size.replace(",",".");
locust.date=CutBeforeFirst(data,";"); //Дата
String row="<tr>";
if(error==true || locust.lat==0 || locust.lon==0 || locust.region_id.equals("") || locust.district_id.equals("") || locust.terrain.equals("") || locust.locust_id.equals("")) {
row="<tr bgcolor=\"red\">";
}
row+="<td>"+i+"</td><td>"+locust.lat+"</td><td>"+locust.lon+"</td><td>"+locust.region+" = "+locust.region_id+"</td><td>"+locust.district+" = "+locust.district_id+"</td><td>"+locust.terrain+"</td><td>"+locust.village+"</td><td>"+locust.locust+" = "+locust.locust_id+"</td><td>"+locust.phase+" = "+locust.locust_have+"</td><td>"+locust.evp+"</td><td>"+locust.size+"</td><td>"+locust.date+"</td>";
row+="</tr>\n";
table += row;
i++;
json+=" \n{\"type\":\"Feature\",\"geometry\":{\"type\":\"Point\",\"coordinates\":["+locust.lon+","+locust.lat+"]},\"properties\":{\"oblast\":\""+locust.region.replace("\"", "'")+"\",\"district\":\""+locust.district.replace("\"", "'")+"\",\"region\":\""+locust.terrain.replace("\"", "'")+"\",\"village\":\""+locust.village.replace("\"", "'")+"\",\"phase\":\""+locust.phase+"\",\"locust\":\""+locust.locust+"\",\"evp\": \""+locust.evp+"\",\"ga\": \""+locust.size+"\",\"date\": \""+locust.date+"\"}},";
sqlData+="insert into main.frmlocust(country_id,region_id,district,terrain,village,lon1,lat1,locust_type_id,locust_have,locust_populated,date)values(5,"+locust.region_id+",'"+locust.district.trim()+"','"+locust.terrain.trim()+"','"+locust.village.trim()+"',"+locust.lon+","+locust.lat+","+locust.locust_id+","+locust.locust_have+","+locust.size+",TO_DATE('"+locust.date+"','DD.MM.YYYY'));\n";
if(i>5000) break;
line=reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}else {
table="CSV file is empty! "+skip;
}
table += "</table>";
json=json.substring(0,json.length()-1); //Удаляю последнюю запятую
json+="\n]}";
model.addAttribute("PreviewTable",table);
model.addAttribute("PreviewGEOJSON",json);
model.addAttribute("PreviewSQL",sqlData);
return "excel";
}
//---------------------------------------------------------------------------
public static String CutBeforeFirst(StringBuffer str,String ch)
{
int pos=str.indexOf(ch);
String result="";
if(pos==-1)
{
result.concat(str.toString());
str.delete(0,str.length());
}else
{
result=str.substring(0,pos);
str.delete(0,pos+1);
}
return result;
}
//---------------------------------------------------------------------------
class Locust{
double lon;
double lat;
String region; //Область
String region_id;
String district; //Район
String district_id;
String terrain; //Название месности
String village; //Хозяйство или местность
String locust; //Вид саранчи
String locust_id; //Вид саранчи
String phase; //Фаза саранчи
String locust_have; //id Фазы саранчи
String evp; //ЭФП
String size; //Заселённая площадь
String date; //Дата
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,226 @@
package kz.locust.CCALM;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
//import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Random;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
//import org.apache.commons.fileupload.FileItem;
//import org.apache.commons.fileupload.disk.DiskFileItemFactory;
//import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.multipart.MultipartFile;
import org.w3c.dom.CharacterData;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSSerializer;
import org.xml.sax.InputSource;
import tctable.Tools;
import tools.EmailUtility;
import tools.PreparedStatementNamed;
import tools.User;
@Controller
@SessionAttributes( { "user" })
public class DataJSON implements ServletContextAware {
private static final Logger logger = LoggerFactory.getLogger(DataJSON.class);
private ServletContext context;
//If not created object "user", create him.
@ModelAttribute("user")
public User populatePerson() {
return new User("none");
}
@RequestMapping(value = "/get_companies",method = {RequestMethod.POST,RequestMethod.GET}, produces = "application/json;charset=UTF-8")
@ResponseBody
public String getCompanies(@ModelAttribute User user,@RequestParam(required=false,name="country_id") String country_id,@RequestParam(required=false,name="lng") String language_id) {
int errorCode=0;
String errorMessage="";
//Load configuration from "config.xml"
String db_url = "";
String db_login = "";
String db_password = "";
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
}
} catch (Exception ex) {
errorCode=1;
errorMessage+="Internal server error, settings.";
logger.info(ex.getMessage());
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
if (conn != null) {
logger.info("Connect is OK!");
} else {
errorCode=1;
errorMessage+="An error occurred while connecting to the database!";
}
} catch (Exception ex) {
logger.info(ex.getMessage());
errorCode=1;
errorMessage+="An error occurred while connecting to the database!";
}
try {
Statement stt0 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
stt0.executeUpdate("SET TIME ZONE 'UTC';");
//stt0.executeUpdate("SET TIME ZONE 'Asia/Almaty';");
stt0.close();
} catch (SQLException ex) {
logger.info(ex.getMessage());
errorCode=1;
errorMessage+="Failed to execute SQL query!";
}
JSONObject doc=null;
JSONArray array=new JSONArray(); //Результирующий набор данных
String sql_query = "";
Statement stt=null;
ResultSet rs=null;
try {
stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
sql_query = "select id,name from main.companies where del=false and name is not null and name!='' and (${country_id} is null or country_id=${country_id})";
PreparedStatementNamed stmtn = new PreparedStatementNamed(conn, sql_query);
if(country_id==null || country_id.equals(""))
stmtn.setNULLInt("country_id");
else
stmtn.setInt("country_id",Integer.parseInt(country_id));
PreparedStatement stmt=stmtn.getPreparedStatement();
rs = stmt.executeQuery();
if (rs != null) {
try {
while(rs.next()) {
JSONObject obj = new JSONObject();
obj.put("id", rs.getLong("id"));
if(rs.getObject("name")!=null)
obj.put("name", rs.getString("name"));
array.put(obj);
}
rs.close();
} catch (SQLException ex) {
errorCode=4;
errorMessage+="Internal server error, sampling.";
ex.printStackTrace();
logger.info(ex.getMessage());
}
}
} catch (SQLException ex) {
errorCode=5;
errorMessage+="Internal server error, query. ";
ex.printStackTrace();
logger.info(ex.getMessage());
}finally {
if(rs!=null) try{rs.close();}catch(SQLException ex){}
if(stt!=null) try{stt.close();}catch(SQLException ex){}
}
if(errorCode!=0) {
JSONObject obj = new JSONObject();
obj.put("errorCode",errorCode);
obj.put("errorMessage", errorMessage);
return obj.toString();
}else {
JSONObject obj = new JSONObject();
obj.put("errorCode",0);
obj.put("errorMessage", "");
if(doc!=null)
obj.put("indicator",doc.getString("indicator"));
obj.put("data",array);
return obj.toString();
}
}
@Override
public void setServletContext(ServletContext servletContext) {
this.context=servletContext;
}
}

View File

@ -0,0 +1,365 @@
package kz.locust.CCALM;
import org.gdal.gdal.Band;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;
import javax.servlet.ServletContext;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
/*import ucar.ma2.Array;
import ucar.nc2.Dimension;
import ucar.nc2.Variable;
import ucar.nc2.dataset.NetcdfDataset;*/
@Controller
public class DownloadNDVI implements ServletContextAware {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(DownloadNDVI.class);
private ServletContext context;
@RequestMapping(value = "/DownloadNDVI",method = RequestMethod.GET,produces = "text/html;charset=UTF-8")
@ResponseBody
public Object ajaxTamer(@RequestParam(required=false,name="forecast") String forecast) {
//String forecast = request.getParameter("forecast"); //Date like as "000".
//response.setContentType("text/html");
//PrintWriter out = response.getWriter();
String result="";
result+="Start!<br>";
//http://gis-lab.info/forum/viewtopic.php?style=1&t=15764
gdal.AllRegister();
Dataset dataset=gdal.Open("O:\\Desctop\\NDVI_from_HDF\\1\\MOD13Q1.A2019049.h27v12.006.2019073153055.hdf" , gdalconstConstants.GA_ReadOnly);
Band o=(Band)dataset.GetRasterBand(1);
long flen=o.getXSize()*o.getYSize();
result+=flen;
/*
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
//Load DB configuration from "config.xml"
String db_url = "";
String db_login = "";
String db_password = "";
String data_dir = "";
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("data-dir"))
data_dir = nl.item(i).getTextContent();
}
} catch (Exception ex) {
logger.info(ex.getMessage());
}
data_dir+="temp"+File.separator;
File dir = new File(data_dir);
if (!dir.exists()) dir.mkdirs();
//response.getWriter().append("Served at: ").append(request.getContextPath());
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
logger.info("Connect is OK!");
result+="Connect is OK!<br>";
}else
{
logger.info("<br>Connect is ERROR<br>");
result+="Connect is ERROR!<br>";
}
}catch(Exception e)
{
logger.info("<br>Connect Exception:"+e.getMessage()+"<br>");
result+="Connect Exception:"+e.getMessage()+"<br>";
}
//Example request: http://localhost:8080/CCALM/DownloadWeather?forecast=000
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String date=dateFormat.format(new Date()); //Date like as "20170327".
String time = "00"; //00 hours,06 hours,12 hours and 18 hours
//String forecast = request.getParameter("forecast"); //Date like as "000".
String measurement = "TSOIL:0-0.1 m below ground";
//String measurement = "TSOIL:0.1-0.4 m below ground";
//Build URL to download
String URL = "https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs."+date+time+"/gfs.t"+time+"z.pgrb2.0p25.f"+forecast;
//URL = "http://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs.2017091200/gfs.t00z.pgrb2.0p25.f000";
WeatherDownload wd = new WeatherDownload();
if(wd.download(URL+".idx", data_dir+"text.idx", "0", ""))
{
result+="Download "+URL+".idx"+" to "+data_dir+"text.idx"+"<br>";
String strPos1="";
String strPos2="";
//Read file and find required line.
try {
BufferedReader br = new BufferedReader(new FileReader(data_dir+"text.idx"));
String line;
while ((line = br.readLine()) != null)
{
//if (line.contains("TSOIL:0-0.1 m below ground"))
if (line.contains(measurement))
{
strPos1=line;
strPos2=br.readLine();
break;
}
}
br.close();
} catch (IOException ex) {
logger.info(ex.getMessage());
result+=ex.getMessage()+"<br>";
}
if(!strPos1.equals(""))
{
//String strPos1 = "250:146339365:d=2017022818:TSOIL:0-0.1 m below ground:anl:"
StringBuffer answer1=new StringBuffer(strPos1);
CutBeforeFirst(answer1,":");
String posStart = CutBeforeFirst(answer1,":");
StringBuffer answer2=new StringBuffer(strPos2);
CutBeforeFirst(answer2,":");
String posEnd = CutBeforeFirst(answer2,":");
if(posEnd==null || posEnd.equals("")) posEnd=""; else
{
posEnd=String.valueOf(Long.parseLong(posEnd)-1);
}
wd.download(URL, data_dir+"text.f000", String.valueOf(posStart), String.valueOf(posEnd));
}
}else
{
result+="Not download "+URL+".idx"+" to "+data_dir+"text.idx"+"<br>";
}
Array dataArrayLat=null;
Array dataArrayLon=null;
Array dataArrayTmp=null;
try {
// open netcdf/grib/grib2 file from argument
NetcdfDataset gid = NetcdfDataset.openDataset(data_dir+"text.f000");
//logger.info("Desc: " + gid.getDescription());
logger.info(gid.getDetailInfo());
//logger.info("Feature type: " + gid.getFeatureType().toString());
// get all grid tables in the file
List<Variable> variables = gid.getReferencedFile().getVariables();
for (int i = 0; i < variables.size(); i++)
{
System.out.print(variables.get(i).getName()+" ");
//LatLon_Projection, lat, lon, reftime, time, depth_below_surface_layer, depth_below_surface_layer_bounds, Soil_temperature_depth_below_surface_layer
if(variables.get(i).getName().equals("reftime"))
{
logger.info("");
logger.info("Description = "+variables.get(i).getDescription());
logger.info("DimensionsString = "+variables.get(i).getDimensionsString());
logger.info("DataType = "+variables.get(i).getDataType());
logger.info("UnitsString = "+variables.get(i).getUnitsString()); //Hour since 2017-02-28T18:00:00Z
}
if(variables.get(i).getName().equals("lon"))
{
dataArrayLon = variables.get(i).read();
}
if(variables.get(i).getName().equals("lat"))
{
dataArrayLat = variables.get(i).read();
}
if(variables.get(i).getName().equals("Soil_temperature_depth_below_surface_layer"))
{
//Section sec=new Section();
dataArrayTmp = variables.get(i).read();
//for(int j=0;j<dataArrayTmp.getSize();j++)
//{
// logger.info(j+") "+dataArrayTmp.getFloat(j)+",");
//}
}
}
logger.info("");
List<Dimension> dims = gid.getDimensions();
logger.info("dims.size() = " + dims.size());
Iterator<Dimension> dimIt = dims.iterator();
while( dimIt.hasNext()) {
Dimension dim = dimIt.next();
logger.info("Dim = " + dim);
logger.info("Dim name = "+dim.getName());
}
dimIt = null;
Statement st=null;
try {
st = conn.createStatement();
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
try {
st.executeUpdate("BEGIN TRANSACTION;");
} catch (SQLException ex) {
logger.info(ex.getMessage());
logger.info(ex.getMessage());
}
result+="Size="+dataArrayLat.getSize()+"<br>";
int pos=0;
for(int nLat=0;nLat<dataArrayLat.getSize();nLat++)
{
for(int nLon=0;nLon<dataArrayLon.getSize();nLon++)
{
//WGS84 Bounds: -180.0000, -90.0000, 180.0000, 90.0000
//Projected Bounds: -180.0000, -90.0000, 180.0000, 90.0000
double lon = dataArrayLon.getFloat(nLon);
if(lon>180) lon=lon-360;
double lat = dataArrayLat.getFloat(nLat);
if(lat>29 && lat<67 && lon>17 && lon<180) //Central Asia
{
if(!Float.isNaN(dataArrayTmp.getFloat(pos))) //On the water none temperatyre.
{
String country_id="";
ResultSet rs=null;
try {
rs = st.executeQuery("select c.id from main.countries c where ST_Contains(c.geom,ST_SetSRID(st_makepoint("+lon+","+lat+"),4326)) limit 1");
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
if (rs != null) {
try {
if (rs.next())
country_id=rs.getString(1);
rs.close();
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
}
if(country_id!=null && !country_id.equals("") && !country_id.equals("null"))
{
//logger.info(lon + "," + lat +","+dataArrayTmp.getFloat(pos));
try {
//String sql="insert into weather(weather_type_id,date,hours,val,geom)values(1,cast(to_timestamp('"+date+" "+time+"', 'YYYYMMDD HH24') as timestamp without time zone),"+forecast+","+dataArrayTmp.getFloat(pos)+",ST_SetSRID(st_makepoint("+lon+","+lat+"),4326));";
//String sql="insert into main.weather(weather_type_id,date,hours,val,geom,country_id)values(1,cast(to_timestamp('"+date+" "+time+"', 'YYYYMMDD HH24') as timestamp without time zone),"+forecast+","+dataArrayTmp.getFloat(pos)+",ST_SetSRID(st_makepoint("+lon+","+lat+"),4326),(select c.id from main.countries c where ST_Contains(c.geom,ST_SetSRID(st_makepoint("+lon+","+lat+"),4326)) limit 1));";
String sql="insert into main.weather(weather_type_id,date,hours,val,geom,country_id)values(1,cast(to_timestamp('"+date+" "+time+"', 'YYYYMMDD HH24') as timestamp without time zone),"+forecast+","+dataArrayTmp.getFloat(pos)+",ST_SetSRID(st_makepoint("+lon+","+lat+"),4326),"+country_id+");";
st.executeUpdate(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
}
}
}
pos++;
}
}
//Cut data pise for Russia
try {
//String sql="update weather w set country_id=null where country_id=7 and not ST_Contains((select geom from main.countriesregions where id=97),w.geom);";
String sql="update main.weather w set country_id=null where country_id=7 and not ST_Contains(ST_SetSRID(ST_GeomFromText('POLYGON((10.00 66.00,10.00 40.00,179.00 40.00,179.00 66.00,10.00 66.00))'),4326),w.geom);";
st.executeUpdate(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
//Delete values where country_id is null
try {
String sql="delete from main.weather where country_id is null;";
st.executeUpdate(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
//Delete all old values
try {
String sql="delete from main.weather where date!=(select max(date) from main.weather limit 1);";
st.executeUpdate(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
logger.info(ex.getMessage());
}
try {
st.executeUpdate("END TRANSACTION;");
} catch (SQLException ex) {
logger.info(ex.getMessage());
logger.info(ex.getMessage());
}
gid.close();
} catch (IOException ex) {
//Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
System.out.print("ERROR!");
}
try {conn.close();} catch (SQLException ex) {logger.info(ex.getMessage());}
result+="End!<br>";
*/
return result;
}
//---------------------------------------------------------------------------
@Override
public void setServletContext(ServletContext context) {
this.context=context;
}
//---------------------------------------------------------------------------
public static String CutBeforeFirst(StringBuffer str,String ch)
{
int pos=str.indexOf(ch);
String result="";
if(pos==-1)
{
result.concat(str.toString());
str.delete(0,str.length());
}else
{
result=str.substring(0,pos);
str.delete(0,pos+1);
}
return result;
}
}

View File

@ -0,0 +1,470 @@
package kz.locust.CCALM;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
//import main.DownloadFromHTTP;
import kz.locust.CCALM.WeatherDownload;
import ucar.ma2.Array;
import ucar.nc2.Dimension;
import ucar.nc2.Variable;
import ucar.nc2.dataset.NetcdfDataset;
@Controller
public class DownloadWeather implements ServletContextAware {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(DownloadWeather.class);
private ServletContext context;
@RequestMapping(value = "/DownloadWeather",method = RequestMethod.GET,produces = "text/html;charset=UTF-8")
@ResponseBody
public Object ajaxTamer(@RequestParam(required=false,name="forecast") String forecast,@RequestParam(required=false,name="date") String date) {
//String forecast = request.getParameter("forecast"); //Date like as "000".
//response.setContentType("text/html");
//PrintWriter out = response.getWriter();
String result="";
result+="Start!<br>";
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
//Load DB configuration from "config.xml"
String db_url = "";
String db_login = "";
String db_password = "";
String data_dir = "";
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("data-dir"))
data_dir = nl.item(i).getTextContent();
}
} catch (Exception ex) {
logger.info(ex.getMessage());
}
data_dir+="temp"+File.separator;
File dir = new File(data_dir);
if (!dir.exists()) dir.mkdirs();
//response.getWriter().append("Served at: ").append(request.getContextPath());
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
logger.info("Connect is OK!");
result+="Connect is OK!<br>";
}else
{
logger.info("<br>Connect is ERROR<br>");
result+="Connect is ERROR!<br>";
}
}catch(Exception e)
{
logger.info("<br>Connect Exception:"+e.getMessage()+"<br>");
result+="Connect Exception:"+e.getMessage()+"<br>";
}
//Example request: http://ccalm.org/DownloadWeather?forecast=000&date=20210531
//Example request: http://localhost:8080/CCALM/DownloadWeather?forecast=000
//Example request: http://127.0.0.1:8080/CCALM/DownloadWeather?forecast=000
if(date==null || date.equals(""))
{
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
date=dateFormat.format(new Date()); //Date like as "20170327".
}
String time = "00"; //00 hours,06 hours,12 hours and 18 hours
//String forecast = request.getParameter("forecast"); //Date like as "000".
String measurement = "TSOIL:0-0.1 m below ground";
//String measurement = "TSOIL:0.1-0.4 m below ground";
//Build URL to download
String URL = "https://www.ftp.ncep.noaa.gov/data/nccf/com/gfs/prod/gfs."+date+"/"+time+"/atmos/gfs.t"+time+"z.pgrb2.0p25.f"+forecast;
File f = new File(data_dir+"text.idx");
if(f.exists()) {
if (!f.delete()) {
System.out.println("Failed to delete the file.");
}
}
WeatherDownload wd = new WeatherDownload();
if(wd.download(URL+".idx", data_dir+"text.idx", "0", ""))
{
result+="Download "+URL+".idx"+" to "+data_dir+"text.idx"+"<br>";
String strPos1="";
String strPos2="";
//Read file and find required line.
try {
BufferedReader br = new BufferedReader(new FileReader(data_dir+"text.idx"));
String line;
while ((line = br.readLine()) != null)
{
//if (line.contains("TSOIL:0-0.1 m below ground"))
if (line.contains(measurement))
{
strPos1=line;
strPos2=br.readLine();
break;
}
}
br.close();
} catch (IOException ex) {
logger.info(ex.getMessage());
result+=ex.getMessage()+"<br>";
}
if(!strPos1.equals(""))
{
//String strPos1 = "250:146339365:d=2017022818:TSOIL:0-0.1 m below ground:anl:"
StringBuffer answer1=new StringBuffer(strPos1);
CutBeforeFirst(answer1,":");
String posStart = CutBeforeFirst(answer1,":");
StringBuffer answer2=new StringBuffer(strPos2);
CutBeforeFirst(answer2,":");
String posEnd = CutBeforeFirst(answer2,":");
if(posEnd==null || posEnd.equals("")) posEnd=""; else
{
posEnd=String.valueOf(Long.parseLong(posEnd)-1);
}
wd.download(URL, data_dir+"text.f000", String.valueOf(posStart), String.valueOf(posEnd));
}
}else
{
result+="Not download "+URL+".idx"+" to "+data_dir+"text.idx"+"<br>";
}
Array dataArrayLat=null;
Array dataArrayLon=null;
Array dataArrayTmp=null;
try {
// open netcdf/grib/grib2 file from argument
NetcdfDataset gid = NetcdfDataset.openDataset(data_dir+"text.f000");
//logger.info("Desc: " + gid.getDescription());
logger.info(gid.getDetailInfo());
//logger.info("Feature type: " + gid.getFeatureType().toString());
// get all grid tables in the file
List<Variable> variables = gid.getReferencedFile().getVariables();
for (int i = 0; i < variables.size(); i++)
{
System.out.print(variables.get(i).getName()+" ");
//LatLon_Projection, lat, lon, reftime, time, depth_below_surface_layer, depth_below_surface_layer_bounds, Soil_temperature_depth_below_surface_layer
if(variables.get(i).getName().equals("reftime"))
{
logger.info("");
logger.info("Description = "+variables.get(i).getDescription());
logger.info("DimensionsString = "+variables.get(i).getDimensionsString());
logger.info("DataType = "+variables.get(i).getDataType());
logger.info("UnitsString = "+variables.get(i).getUnitsString()); //Hour since 2017-02-28T18:00:00Z
}
if(variables.get(i).getName().equals("lon"))
{
dataArrayLon = variables.get(i).read();
}
if(variables.get(i).getName().equals("lat"))
{
dataArrayLat = variables.get(i).read();
}
if(variables.get(i).getName().equals("Soil_temperature_depth_below_surface_layer"))
{
//Section sec=new Section();
dataArrayTmp = variables.get(i).read();
/*for(int j=0;j<dataArrayTmp.getSize();j++)
{
logger.info(j+") "+dataArrayTmp.getFloat(j)+",");
}*/
}
}
logger.info("");
List<Dimension> dims = gid.getDimensions();
logger.info("dims.size() = " + dims.size());
Iterator<Dimension> dimIt = dims.iterator();
while( dimIt.hasNext()) {
Dimension dim = dimIt.next();
logger.info("Dim = " + dim);
logger.info("Dim name = "+dim.getName());
}
dimIt = null;
Statement st=null;
try {
st = conn.createStatement();
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
try {
st.executeUpdate("BEGIN TRANSACTION;");
} catch (SQLException ex) {
logger.info(ex.getMessage());
logger.info(ex.getMessage());
}
result+="Size="+dataArrayLat.getSize()+"<br>";
int pos=0;
for(int nLat=0;nLat<dataArrayLat.getSize();nLat++)
{
for(int nLon=0;nLon<dataArrayLon.getSize();nLon++)
{
//WGS84 Bounds: -180.0000, -90.0000, 180.0000, 90.0000
//Projected Bounds: -180.0000, -90.0000, 180.0000, 90.0000
double lon = dataArrayLon.getFloat(nLon);
if(lon>180) lon=lon-360;
double lat = dataArrayLat.getFloat(nLat);
if(lat>29 && lat<67 && lon>17 && lon<180) //Central Asia
{
if(!Float.isNaN(dataArrayTmp.getFloat(pos))) //On the water none temperatyre.
{
String country_id="";
ResultSet rs=null;
try {
rs = st.executeQuery("select c.id from main.countries c where ST_Contains(c.geom,ST_SetSRID(st_makepoint("+lon+","+lat+"),4326)) limit 1");
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
if (rs != null) {
try {
if (rs.next())
country_id=rs.getString(1);
rs.close();
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
}
if(country_id!=null && !country_id.equals("") && !country_id.equals("null"))
{
//logger.info(lon + "," + lat +","+dataArrayTmp.getFloat(pos));
try {
//String sql="insert into main.weather(weather_type_id,date,hours,val,geom)values(1,cast(to_timestamp('"+date+" "+time+"', 'YYYYMMDD HH24') as timestamp without time zone),"+forecast+","+dataArrayTmp.getFloat(pos)+",ST_SetSRID(st_makepoint("+lon+","+lat+"),4326));";
//String sql="insert into main.weather(weather_type_id,date,hours,val,geom,country_id)values(1,cast(to_timestamp('"+date+" "+time+"', 'YYYYMMDD HH24') as timestamp without time zone),"+forecast+","+dataArrayTmp.getFloat(pos)+",ST_SetSRID(st_makepoint("+lon+","+lat+"),4326),(select c.id from main.countries c where ST_Contains(c.geom,ST_SetSRID(st_makepoint("+lon+","+lat+"),4326)) limit 1));";
String sql="insert into main.weather(weather_type_id,date,hours,val,geom,country_id)values(1,cast(to_timestamp('"+date+" "+time+"', 'YYYYMMDD HH24') as timestamp without time zone),"+forecast+","+dataArrayTmp.getFloat(pos)+",ST_SetSRID(st_makepoint("+lon+","+lat+"),4326),"+country_id+");";
st.executeUpdate(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
}
}
}
pos++;
}
}
//Cut data piece from big country of Russia
try {
//String sql="update weather w set country_id=null where country_id=7 and not ST_Contains((select geom from main.countriesregions where id=97),w.geom);";
String sql="update main.weather w set country_id=null where country_id=7 and not ST_Contains(ST_SetSRID(ST_GeomFromText('POLYGON((10.00 66.00,10.00 40.00,179.00 40.00,179.00 66.00,10.00 66.00))'),4326),w.geom);";
st.executeUpdate(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
//Delete values where country_id is null
try {
String sql="delete from main.weather where country_id is null;";
st.executeUpdate(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
//Delete all old values аnd not a multiple of 10.
try {
String sql="delete from main.weather where date!=(select max(date) from main.weather limit 1) and ((DATE_PART('doy',date)::INTEGER-1)%10!=0 or ((DATE_PART('doy',date)::INTEGER-1)%10=0 and hours=48));";
st.executeUpdate(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
logger.info(ex.getMessage());
}
try {
st.executeUpdate("END TRANSACTION;");
} catch (SQLException ex) {
logger.info(ex.getMessage());
logger.info(ex.getMessage());
}
gid.close();
} catch (IOException ex) {
//Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
System.out.print("ERROR!");
}
try {conn.close();} catch (SQLException ex) {logger.info(ex.getMessage());}
result+="End!<br>";
return result;
}
//---------------------------------------------------------------------------
@Override
public void setServletContext(ServletContext context) {
this.context=context;
}
//---------------------------------------------------------------------------
public static String CutBeforeFirst(StringBuffer str,String ch)
{
int pos=str.indexOf(ch);
String result="";
if(pos==-1)
{
result.concat(str.toString());
str.delete(0,str.length());
}else
{
result=str.substring(0,pos);
str.delete(0,pos+1);
}
return result;
}
//---------------------------------------------------------------------------
//List of "Soil temperature" dates from database in JSON
@RequestMapping(value = "/WeatherSoilDates",method = RequestMethod.GET,produces = "text/html;charset=UTF-8")
@ResponseBody
public Object ajaxSoilDates() {
boolean error=false;
String result="";
//Load DB configuration from "config.xml"
String db_url = "";
String db_login = "";
String db_password = "";
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
}
} catch (Exception ex) {
logger.info(ex.getMessage());
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
if (conn != null) {
logger.info("Connect is OK!");
} else {
error=true;
result="An error occurred while connecting to the database!";
}
} catch (Exception ex) {
logger.info(ex.getMessage());
error=true;
result="<br>SQLException: "+ex.getMessage()+"<br>";
}
if(!error)
{
Statement st;
try {
st = conn.createStatement();
String sql = "SELECT to_char(date, 'YYYY-MM-DD') as date,hours as hour,DATE_PART('doy',date)-1 as day FROM main.weather group by date,hours order by date,hours";
ResultSet rs = st.executeQuery(sql);
if(rs!=null)
{
boolean exists=false;
result="[";
while (rs.next())
{
exists=true;
try {
result+= "{\"num\":\""+rs.getString("day")+"\", \"hour\":\""+rs.getString("hour")+"\", \"date\":\""+rs.getString("date")+"\"},";
} catch( Exception ex )
{
}
}
if(exists) {
result=result.substring(0, result.length()-1);
result+="]";
}else {
result="[]";
}
}
st.close();
conn.close();
} catch (SQLException ex) {
result="<br>SQLException:"+ex.getMessage()+"<br>";
}
}
return result;
}
//---------------------------------------------------------------------------
}

View File

@ -0,0 +1,278 @@
package kz.locust.CCALM;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import tctable.TCField;
import tctable.TCTable;
@Controller
public class GeoGSON implements ServletContextAware {
private static final Logger logger = LoggerFactory.getLogger(GeoGSON.class);
private ServletContext context;
@RequestMapping(value = "/geojson", method = RequestMethod.GET)
@ResponseBody
public Object home(HttpServletResponse response,@RequestParam(required=false,name="table") String table,@RequestParam(required=false,name="id") String id)
{
boolean error=false;
String result="";
String db_url = "";
String db_login = "";
String db_password = "";
//Load DB configuration from "config.xml"
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
}
} catch (Exception ex) {
logger.info(ex.getMessage());
error=true;
result="<br>SQLException: "+ex.getMessage()+"<br>";
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
if (conn != null) {
logger.info("Connect is OK!");
} else {
error=true;
result="An error occurred while connecting to the database!";
}
} catch (Exception ex) {
logger.info(ex.getMessage());
error=true;
result="<br>SQLException: "+ex.getMessage()+"<br>";
}
if(!error)
{
Statement st;
try {
st = conn.createStatement();
String sql="select id,name,ST_AsGeoJSON(geom,3,0) as geom from main."+table+" where id="+id+";";
ResultSet rs = st.executeQuery(sql);
if(rs!=null)
{
while (rs.next())
{
String geom=null;
try {
geom=rs.getString("geom");
} catch( Exception ex )
{
result="<metadata fn=\"-1\"><![CDATA[SQLException: "+ex.getMessage()+"]]></metadata>";
}
if(geom==null) geom="";
result=geom;
}
}
st.close();
conn.close();
} catch (SQLException ex) {
result="<br>SQLException:"+ex.getMessage()+"<br>";
}
}
return result;
}
@Override
public void setServletContext(ServletContext context) {
this.context=context;
}
//For compilatin android project
//http://127.0.0.1:8080/CCALM/countriesregionspoints
@RequestMapping(value = "/countriesregionspoints", method = RequestMethod.GET)
@ResponseBody
public Object countriesregions(HttpServletResponse response)
{
boolean error=false;
String result="OK<br>";
String db_url = "";
String db_login = "";
String db_password = "";
String data_dir = "";
//Load DB configuration from "config.xml"
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("data-dir"))
data_dir = nl.item(i).getTextContent();
}
} catch (Exception ex) {
logger.info(ex.getMessage());
error=true;
result+="<br>SQLException: "+ex.getMessage()+"<br>";
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
if (conn != null) {
logger.info("Connect is OK!");
} else {
error=true;
result+="An error occurred while connecting to the database!";
}
} catch (Exception ex) {
logger.info(ex.getMessage());
error=true;
result+="<br>SQLException: "+ex.getMessage()+"<br>";
}
if(!error)
{
Statement st,stC;
//Каждую геозонку области записываю в отдельный файл
String sql="select id from main.countriesregions where del=false";
try {
stC = conn.createStatement();
ResultSet rsC = stC.executeQuery(sql);
if(rsC!=null)
{
while (rsC.next())
{
sql="";
//sql+=" select t1.id as country_region_id,(ST_DumpPoints(geom)).path[1] as pos,cast(ST_X((ST_DumpPoints(geom)).geom) as real) lon,cast(ST_Y((ST_DumpPoints(geom)).geom) as real) lat from";
sql+=" select cast(ST_X((ST_DumpPoints(geom)).geom) as real) lon,cast(ST_Y((ST_DumpPoints(geom)).geom) as real) lat from";
sql+=" (";
sql+=" select id,name,ST_Area(t.gone) area,ST_ExteriorRing(gone) as geom from";
sql+=" (select id,name,ST_NumGeometries(geom),(ST_Dump(geom)).geom gone from main.countriesregions where del=false and id="+rsC.getString("id")+") t";
sql+=" )t1";
sql+=" ,";
sql+=" (select id,max(ST_Area(t.gone)) area from";
sql+=" (select id,name,ST_NumGeometries(geom),(ST_Dump(geom)).geom gone from main.countriesregions where del=false and id="+rsC.getString("id")+") t";
sql+=" group by id) t2";
sql+=" where";
sql+=" t1.id=t2.id";
sql+=" and t1.area=t2.area";
st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
try {
if(rs!=null)
{
File targetFile = new File(data_dir+"region_"+rsC.getString("id")+".tbl"); //Андроид не разрешает ресурсы с циферки
OutputStream outStream = new FileOutputStream(targetFile);
TCTable tbl=new TCTable("crcountriesregionspoints",123456);
logger.info("countriesregionspoints");
ResultSetMetaData rsmd = rs.getMetaData();
for(int i=1;i<=rsmd.getColumnCount();i++)
{
logger.info(i+") name="+rsmd.getColumnName(i)+" type="+rsmd.getColumnTypeName(i));
TCField field=new TCField(rsmd.getColumnName(i), rsmd.getColumnTypeName(i));
tbl.addField(field);
}
tbl.getHeader(outStream);
while (rs.next())
{
for(int i=1;i<=rsmd.getColumnCount();i++)
{
if(!rsmd.getColumnTypeName(i).equals("geometry"))
tbl.fields.get(i-1).setValue(rs.getString(i));
else
tbl.fields.get(i-1).setValue(null);
}
//Save binary data to stream
tbl.getCol(outStream);
}
outStream.flush();
outStream.close();
}
rs.close();
st.close();
//response.getOutputStream();
//response.flushBuffer();
} catch (IOException ex) {
result+="<br>SQLException:"+ex.getMessage()+"<br>";
}
}
}
rsC.close();
stC.close();
conn.close();
} catch (SQLException ex) {
// TODO Auto-generated catch block
result+="<br>SQLException:"+ex.getMessage()+"<br>";
}
}
return result;
}
}

View File

@ -0,0 +1,774 @@
package kz.locust.CCALM;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.util.Base64;
import java.nio.file.Files;
import tctable.Tools;
@Controller
public class Integration implements ServletContextAware {
private static final int BUFFER_SIZE = 4096;
private static final Logger logger = LoggerFactory.getLogger(Integration.class);
private ServletContext context;
@RequestMapping(value = "/integration/getByTime", method = RequestMethod.GET,produces = "application/json; charset=utf-8")
@ResponseBody
public Object getByTime(HttpServletResponse response,@RequestParam(required=true,name="token") String token,@RequestParam(required=true,name="timeBegin") String timeBegin,@RequestParam(required=false,name="timeEnd") String timeEnd,@RequestParam(required=false,name="type") String type)
{
if(type!=null && type.equals("del"))
return getDataDel(token,timeBegin,timeEnd,null,null);
else
return getData(token,timeBegin,timeEnd,null,null);
}
@RequestMapping(value = "/integration/getByDate", method = RequestMethod.GET,produces = "application/json; charset=utf-8")
@ResponseBody
public Object getByDate(HttpServletResponse response,@RequestParam(required=true,name="token") String token,@RequestParam(required=true,name="dateBegin") String dateBegin,@RequestParam(required=false,name="dateEnd") String dateEnd,@RequestParam(required=false,name="type") String type)
{
if(type!=null && type.equals("del"))
return getDataDel(token,null,null,dateBegin,dateEnd);
else
return getData(token,null,null,dateBegin,dateEnd);
}
//Prepare data for sending to integration servers.
String getData(String token, String timeBegin,String timeEnd,String dateBegin,String dateEnd) {
int errorCode=0;
String errorCodeDescription="";
if(!(
token.equals("DA46DCA8E49D52A12614D4FE4CF4")
|| token.equals("R5375VJERFJKFTGKT8235QFSJHDE")
|| token.equals("QIWGHIEEEEEE732RUEWHDHREU92Z")
|| token.equals("BA46DCA8E49D52A12614D4FE4CF5") //Kazahstan
)) { //Access only for Russians
JSONObject obj = new JSONObject();
obj.put("errorCode",1);
obj.put("errorCodeDescription", "Token is not correct!");
return obj.toString();
}
String db_url="";
String db_login="";
String db_password="";
//Load DB configuration from "config.xml"
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
errorCode=2;
errorCodeDescription+="Внутренняя ошибка сервера, настройки. ";
e.printStackTrace();
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
} catch (Exception ex) {
errorCode=3;
errorCodeDescription+="Внутренняя ошибка сервера, база. ";
ex.printStackTrace();
}
JSONArray array=new JSONArray(); //Результирующий набор данных
String sql_query = "";
Statement stt=null;
ResultSet rs=null;
try {
stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
sql_query = "select * from main.integration_1(1,?::bigint,?::bigint,TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI')::timestamp,TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI')::timestamp);";
//String timeBegin,String timeEnd,String dateBegin,String dateEnd
PreparedStatement stmt=null;
stmt = conn.prepareStatement(sql_query);
stmt.setString(1,timeBegin);
stmt.setString(2,timeEnd);
stmt.setString(3,dateBegin);
stmt.setString(4,dateEnd);
//stmt.execute();
rs = stmt.executeQuery();
//rs = stt.executeQuery(sql_query);
if (rs != null) {
try {
while(rs.next()) {
JSONObject obj = new JSONObject();
obj.put("id", rs.getLong("id"));
obj.put("seq", rs.getLong("seq"));
obj.put("country_name", rs.getString("country_name")); //Страна
obj.put("region_name", rs.getString("region_name")); //Область
obj.put("town_name", rs.getString("town_name")); //Район
obj.put("date", rs.getString("date")); //Дата анкетирования
obj.put("surveyed_area", rs.getDouble("surveyed_area")); //Обследованная площадь га
int cnt1=0;
if(rs.getString("lat1")!=null && rs.getString("lon1")!=null) cnt1++;
if(rs.getString("lat2")!=null && rs.getString("lon2")!=null) cnt1++;
if(rs.getString("lat3")!=null && rs.getString("lon3")!=null) cnt1++;
if(rs.getString("lat4")!=null && rs.getString("lon4")!=null) cnt1++;
if(rs.getString("lat5")!=null && rs.getString("lon5")!=null) cnt1++;
if(rs.getString("lat6")!=null && rs.getString("lon6")!=null) cnt1++;
boolean point=cnt1<=2;
JSONObject geom = new JSONObject();
if(point) {
geom.put("type","Point");
JSONArray crdSub=new JSONArray();
crdSub.put(rs.getDouble("lon1"));
crdSub.put(rs.getDouble("lat1"));
geom.put("coordinates", crdSub);
}else {
geom.put("type","Polygon");
JSONArray crdMain=new JSONArray();
JSONArray crdSub=new JSONArray();
crdMain.put(crdSub);
if(rs.getString("lat1")!=null && rs.getString("lon1")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon1"));
crd.put(rs.getDouble("lat1"));
crdSub.put(crd);
}
if(rs.getString("lat2")!=null && rs.getString("lon2")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon2"));
crd.put(rs.getDouble("lat2"));
crdSub.put(crd);
}
if(rs.getString("lat3")!=null && rs.getString("lon3")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon3"));
crd.put(rs.getDouble("lat3"));
crdSub.put(crd);
}
if(rs.getString("lat4")!=null && rs.getString("lon4")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon4"));
crd.put(rs.getDouble("lat4"));
crdSub.put(crd);
}
if(rs.getString("lat5")!=null && rs.getString("lon5")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon5"));
crd.put(rs.getDouble("lat5"));
crdSub.put(crd);
}
if(rs.getString("lat6")!=null && rs.getString("lon6")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon6"));
crd.put(rs.getDouble("lat6"));
crdSub.put(crd);
}
geom.put("coordinates", crdMain);
}
obj.put("geom", geom);
//Экологическая информация
obj.put("biotope_type", rs.getString("biotope_type"));
obj.put("vegetation", rs.getString("vegetation"));
obj.put("vegetation_cover", rs.getString("vegetation_cover"));
obj.put("air_temperature", rs.getString("air_temperature"));
obj.put("wind_speed", rs.getString("wind_speed"));
//Информация о саранче в том числе кубышки
obj.put("subject_name", rs.getString("subject_name")); //Вид саранчи
obj.put("infested_area", rs.getDouble("infested_area"));//Зараженная область га
// Eggs
obj.put("eggs_bed_area", rs.getDouble("egg_bed_area")); // numeric, --Залежь кубышек
obj.put("eggs_pods_density_from_m2", rs.getDouble("egg_pods_density_from_m2")); // numeric, --Плотность кубышек м2 с
obj.put("eggs_pods_density_to_m2", rs.getDouble("egg_pods_density_to_m2")); // numeric, --Плотность кубышек м2 до
obj.put("eggs_average_number_egg_pod", rs.getDouble("eggs_average_number_egg_pod")); // numeric, --Яйца в среднем в кубышке
obj.put("eggs_viable", rs.getDouble("eggs_viable")); // numeric, --Яйца (% жизнеспособных)
obj.put("eggs_natural_enemies", rs.getString("eggs_natural_enemies")); // character varying, --Естественные враги
// Hoppers (scattered) Личинки (разряженные)
obj.put("hoppers_hatching", rs.getString("hoppers_hatching")); // character varying, --Отрождение
obj.put("hoppers_stages", rs.getString("hoppers_stages")); // character varying, --Возраст личинок
obj.put("hoppers_appearance", rs.getString("hoppers_appearance")); // character varying, --Фаза
obj.put("hoppers_spatial_distribution", rs.getString("hoppers_spatial_distribution")); // character varying, --Пространственное распределени е
obj.put("hoppers_density_from_m2", rs.getDouble("hoppers_density_from_m2")); // numeric, --Плотность личинок от м2
obj.put("hoppers_density_to_m2", rs.getDouble("hoppers_density_to_m2")); // numeric, --Плотность личинок до м2
// Bands Кулиги
obj.put("bands_density_from_m2", rs.getDouble("bands_density_from_m2")); // numeric, --Плотность минимальная в кулиге м2
obj.put("bands_density_to_m2", rs.getDouble("bands_density_to_m2")); // numeric, --Плотность максимальная в кулиге м2
obj.put("bands_sizes_m2", rs.getDouble("bands_sizes_m2")); // numeric, --Размер кулиг М2
obj.put("bands_number_in_ha", rs.getDouble("bands_number_in_ha")); // numeric, --Количество кулиг Га
obj.put("bands_behavior", rs.getString("bands_behavior")); // character varying, -- Поведение
obj.put("bands_stages", rs.getString("bands_stages")); // character varying, -- Возраст личинок
// Adults Имаго
obj.put("adults_fledging", rs.getString("adults_fledging")); // character varying, -- Окрыление
obj.put("adults_maturity", rs.getBoolean("adults_maturity")); // boolean, -- Половозрелость
obj.put("adults_phase", rs.getString("adults_phase")); // character varying, --Фаза
obj.put("adults_spatial_distribution", rs.getString("adults_spatial_distribution")); // character varying, --Пространственное распределение
obj.put("adults_density_ha", rs.getDouble("adults_density_ha")); // numeric, --Плотность имаго га
obj.put("adults_density_m2", rs.getDouble("adults_density_m2")); // numeric, --Плотность имаго м2
obj.put("adults_roosting", rs.getBoolean("adults_roosting")); // boolean, --Питпние и размещение на растениях
obj.put("adults_copulation", rs.getBoolean("adults_copulation")); // boolean, --Спаривание
obj.put("adults_laying", rs.getBoolean("adults_laying")); // boolean, --Яйцекладка
obj.put("adults_flying", rs.getBoolean("adults_flying")); // boolean, --Полёты
// Swarms Стаи
obj.put("swarms_maturity", rs.getBoolean("swarms_maturity")); // boolean, --Половозрелость
obj.put("swarms_density", rs.getString("swarms_density")); // character varying, --Плотность в стае
obj.put("swarms_size", rs.getDouble("swarms_size")); // numeric, --Размер стаи га
obj.put("swarms_count", rs.getDouble("swarms_count")); // numeric, --Число стай
obj.put("swarms_flying_direction", rs.getString("swarms_flying_direction")); // character varying, --Направление полёта
obj.put("swarms_height", rs.getString("swarms_height")); // character varying, --Высота полёта
// Comment
obj.put("description", rs.getString("description"));
//{"type":"Polygon","coordinates":[[[38.513140949068344,46.51316246698309],[38.51303118002319,46.5020304054714],[38.52109926473999,46.50204517540462],[38.521123203096664,46.513073865446586],[38.513140949068344,46.51316246698309]]]}
array.put(obj);
}
rs.close();
} catch (SQLException ex) {
errorCode=4;
errorCodeDescription+="Внутренняя ошибка сервера, выборка. ";
ex.printStackTrace();
logger.info(ex.getMessage());
}
}
} catch (SQLException ex) {
errorCode=5;
errorCodeDescription+="Внутренняя ошибка сервера, запрос. ";
ex.printStackTrace();
logger.info(ex.getMessage());
}finally {
if(rs!=null) try{rs.close();}catch(SQLException ex){}
if(stt!=null) try{stt.close();}catch(SQLException ex){}
}
if(errorCode!=0) {
JSONObject obj = new JSONObject();
obj.put("errorCode",errorCode);
obj.put("errorCodeDescription", errorCodeDescription);
return obj.toString();
}else {
return array.toString();
}
}
//Prepare data for sending to integration servers.
String getDataDel(String token, String timeBegin,String timeEnd,String dateBegin,String dateEnd) {
int errorCode=0;
String errorCodeDescription="";
if(!(
token.equals("DA46DCA8E49D52A12614D4FE4CF4")
|| token.equals("R5375VJERFJKFTGKT8235QFSJHDE")
|| token.equals("QIWGHIEEEEEE732RUEWHDHREU92Z")
|| token.equals("BA46DCA8E49D52A12614D4FE4CF5") //Kzahstan
)) { //Access only for Russians
JSONObject obj = new JSONObject();
obj.put("errorCode",1);
obj.put("errorCodeDescription", "Token is not correct!");
return obj.toString();
}
String db_url="";
String db_login="";
String db_password="";
//Load DB configuration from "config.xml"
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
errorCode=2;
errorCodeDescription+="Внутренняя ошибка сервера, настройки. ";
e.printStackTrace();
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
} catch (Exception ex) {
errorCode=3;
errorCodeDescription+="Внутренняя ошибка сервера, база. ";
ex.printStackTrace();
}
JSONArray array=new JSONArray(); //Результирующий набор данных
String sql_query = "";
Statement stt=null;
ResultSet rs=null;
try {
stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
sql_query = "select * from main.integration_2(1,?::bigint,?::bigint,TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI')::timestamp,TO_TIMESTAMP(?,'YYYY-MM-DD HH24:MI')::timestamp);";
//String timeBegin,String timeEnd,String dateBegin,String dateEnd
PreparedStatement stmt=null;
stmt = conn.prepareStatement(sql_query);
stmt.setString(1,timeBegin);
stmt.setString(2,timeEnd);
stmt.setString(3,dateBegin);
stmt.setString(4,dateEnd);
//stmt.execute();
rs = stmt.executeQuery();
//rs = stt.executeQuery(sql_query);
if (rs != null) {
try {
while(rs.next()) {
JSONObject obj = new JSONObject();
obj.put("id", rs.getLong("id"));
obj.put("seq", rs.getLong("seq"));
obj.put("country_name", rs.getString("country_name")); //Страна
obj.put("region_name", rs.getString("region_name")); //Область
obj.put("town_name", rs.getString("town_name")); //Район
obj.put("date", rs.getString("date")); //Дата анкетирования
//obj.put("surveyed_area", rs.getDouble("surveyed_area")); //Обследованная площадь га
int cnt1=0;
//lat_center
if(rs.getString("lat1")!=null && rs.getString("lon1")!=null) cnt1++;
if(rs.getString("lat2")!=null && rs.getString("lon2")!=null) cnt1++;
if(rs.getString("lat3")!=null && rs.getString("lon3")!=null) cnt1++;
if(rs.getString("lat4")!=null && rs.getString("lon4")!=null) cnt1++;
if(rs.getString("lat5")!=null && rs.getString("lon5")!=null) cnt1++;
if(rs.getString("lat6")!=null && rs.getString("lon6")!=null) cnt1++;
boolean point=cnt1<=2;
JSONObject geom = new JSONObject();
if(point) {
geom.put("type","Point");
JSONArray crdSub=new JSONArray();
crdSub.put(rs.getDouble("lon_center"));
crdSub.put(rs.getDouble("lat_center"));
geom.put("coordinates", crdSub);
}else {
geom.put("type","Polygon");
JSONArray crdMain=new JSONArray();
JSONArray crdSub=new JSONArray();
crdMain.put(crdSub);
if(rs.getString("lat1")!=null && rs.getString("lon1")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon1"));
crd.put(rs.getDouble("lat1"));
crdSub.put(crd);
}
if(rs.getString("lat2")!=null && rs.getString("lon2")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon2"));
crd.put(rs.getDouble("lat2"));
crdSub.put(crd);
}
if(rs.getString("lat3")!=null && rs.getString("lon3")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon3"));
crd.put(rs.getDouble("lat3"));
crdSub.put(crd);
}
if(rs.getString("lat4")!=null && rs.getString("lon4")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon4"));
crd.put(rs.getDouble("lat4"));
crdSub.put(crd);
}
if(rs.getString("lat5")!=null && rs.getString("lon5")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon5"));
crd.put(rs.getDouble("lat5"));
crdSub.put(crd);
}
if(rs.getString("lat6")!=null && rs.getString("lon6")!=null) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon6"));
crd.put(rs.getDouble("lat6"));
crdSub.put(crd);
}
geom.put("coordinates", crdMain);
}
obj.put("geom", geom);
obj.put("infested_area", rs.getDouble("infested_area")); //double precision,
obj.put("treated_area", rs.getDouble("treated_area")); //numeric,
obj.put("district", rs.getString("district")); //character varying,
obj.put("village", rs.getString("village")); //character varying,
obj.put("terrain", rs.getString("terrain")); //character varying,
obj.put("observer", rs.getString("observer")); //character varying,
obj.put("vegetation_type_name", rs.getString("vegetation_type_name")); //character varying,
obj.put("vegetation_height", rs.getDouble("vegetation_height")); //real,
obj.put("vegetation_cover_name", rs.getString("vegetation_cover_name")); //character varying,
obj.put("vegetation_crop", rs.getString("vegetation_crop")); //character varying,
obj.put("vegetation_damage_name", rs.getString("vegetation_damage_name")); //character varying,
obj.put("vegetation_damage_area", rs.getDouble("vegetation_damage_area")); //double precision,
obj.put("insecticide_name", rs.getString("insecticide_name")); //character varying,
obj.put("insecticide_active_substance", rs.getString("insecticide_active_substance")); //character varying,
obj.put("insecticide_concentration", rs.getString("insecticide_concentration")); //character varying,
obj.put("insecticide_formulation_name", rs.getString("insecticide_formulation_name")); //character varying,
obj.put("insecticide_dose", rs.getDouble("insecticide_dose")); //numeric,
obj.put("insecticide_rate", rs.getDouble("insecticide_rate")); //numeric,
obj.put("insecticide_used_volume", rs.getDouble("insecticide_used_volume")); //numeric,
obj.put("insecticide_number_spores", rs.getDouble("insecticide_number_spores")); //numeric,
obj.put("weather_time_start", rs.getDouble("weather_time_start")); //real,
obj.put("weather_time_end", rs.getDouble("weather_time_end")); //real,
obj.put("weather_temperature_start", rs.getDouble("weather_temperature_start")); //real,
obj.put("weather_temperature_end", rs.getDouble("weather_temperature_end")); //real,
obj.put("weather_humidity_start", rs.getDouble("weather_humidity_start")); //real,
obj.put("weather_humidity_end", rs.getDouble("weather_humidity_end")); //real,
obj.put("weather_wind_speed_start", rs.getDouble("weather_wind_speed_start")); //real,
obj.put("weather_wind_speed_end", rs.getDouble("weather_wind_speed_end")); //real,
obj.put("weather_direction_start", rs.getString("weather_direction_start")); //character varying,
obj.put("weather_direction_end", rs.getString("weather_direction_end")); //character varying,
obj.put("weather_spray_direction_start", rs.getString("weather_spray_direction_start")); //character varying,
obj.put("weather_spray_direction_end", rs.getString("weather_spray_direction_end")); //character varying,
obj.put("subject_name", rs.getString("subject_name")); //character varying,
obj.put("locust_hoppers_name", rs.getString("locust_hoppers_name")); //character varying,
obj.put("locust_imago", rs.getBoolean("locust_imago")); //boolean,
obj.put("locust_density", rs.getDouble("locust_density")); //real,
obj.put("locust_kuliguli", rs.getBoolean("locust_kuliguli")); //boolean,
obj.put("locust_swarm", rs.getBoolean("locust_swarm")); //boolean,
obj.put("locust_sparse", rs.getBoolean("locust_sparse")); //boolean,
obj.put("locust_phase_name", rs.getString("locust_phase_name")); //character varying,
obj.put("spray_platform_name", rs.getString("spray_platform_name")); //character varying,
obj.put("spray_platform_a_name", rs.getString("spray_platform_a_name")); //character varying,
obj.put("spray_platform_g_name", rs.getString("spray_platform_g_name")); //character varying,
obj.put("spray_platform_h_name", rs.getString("spray_platform_h_name")); //character varying,
obj.put("spray_capacity_name", rs.getString("spray_capacity_name")); //character varying,
obj.put("spray_manufacturer_name", rs.getString("spray_manufacturer_name")); //character varying,
obj.put("spray_model_name", rs.getString("spray_model_name")); //character varying,
obj.put("spray_height", rs.getDouble("spray_height")); //numeric,
obj.put("spray_barrier", rs.getBoolean("spray_barrier")); //boolean,
obj.put("spray_barrier_width", rs.getDouble("spray_barrier_width")); //real,
obj.put("spray_barrier_space", rs.getDouble("spray_barrier_space")); //real,
obj.put("spray_speed", rs.getDouble("spray_speed")); //numeric,
obj.put("spray_gps", rs.getBoolean("spray_gps")); //boolean,
obj.put("spray_marking_name", rs.getString("spray_marking_name")); //character varying,
obj.put("efficacy_mortality", rs.getDouble("efficacy_mortality")); //real,
obj.put("efficacy_passed_time", rs.getDouble("efficacy_passed_time")); //numeric,
obj.put("efficacy_mortality_method_name", rs.getString("efficacy_mortality_method_name")); //character varying,
obj.put("safety_clothing", rs.getString("safety_clothing")); //text,
obj.put("safety_clothing_clean", rs.getBoolean("safety_clothing_clean")); //boolean,
obj.put("safety_operator_health", rs.getBoolean("safety_operator_health")); //boolean,
obj.put("description", rs.getString("description")); //character varying,
obj.put("safety_inform", rs.getString("safety_inform")); //text,
obj.put("safety_container_name", rs.getString("safety_container_name")); //text,
obj.put("safety_non_target", rs.getBoolean("safety_non_target")); //boolean,
obj.put("safety_non_target_effect", rs.getString("safety_non_target_effect")); //character varying,
obj.put("safety_incident", rs.getBoolean("safety_incident")); //boolean,
obj.put("safety_incident_effect", rs.getString("safety_incident_effect")); //character varying,
obj.put("comments", rs.getString("comments")); //character varying
array.put(obj);
}
rs.close();
} catch (SQLException ex) {
errorCode=4;
errorCodeDescription+="Внутренняя ошибка сервера, выборка. ";
ex.printStackTrace();
logger.info(ex.getMessage());
}
}
} catch (SQLException ex) {
errorCode=5;
errorCodeDescription+="Внутренняя ошибка сервера, запрос. ";
ex.printStackTrace();
logger.info(ex.getMessage());
}finally {
if(rs!=null) try{rs.close();}catch(SQLException ex){}
if(stt!=null) try{stt.close();}catch(SQLException ex){}
}
if(errorCode!=0) {
JSONObject obj = new JSONObject();
obj.put("errorCode",errorCode);
obj.put("errorCodeDescription", errorCodeDescription);
return obj.toString();
}else {
return array.toString();
}
}
@RequestMapping(value = "/integration/getPhoto", method = RequestMethod.GET,produces = "application/json; charset=utf-8")
@ResponseBody
public Object getPhoto(HttpServletResponse response,@RequestParam(required=true,name="token") String token,@RequestParam(required=true,name="id") Long id)
{
int errorCode=0;
String errorCodeDescription="";
if(!(
token.equals("DA46DCA8E49D52A12614D4FE4CF4")
|| token.equals("R5375VJERFJKFTGKT8235QFSJHDE")
|| token.equals("QIWGHIEEEEEE732RUEWHDHREU92Z")
|| token.equals("BA46DCA8E49D52A12614D4FE4CF5") //Казахстан
)) {
JSONObject obj = new JSONObject();
obj.put("errorCode",1);
obj.put("errorCodeDescription", "Token is not correct!");
return obj.toString();
}
String db_url="";
String db_login="";
String db_password="";
String data_dir = "";
//Load DB configuration from "config.xml"
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("data-dir"))
data_dir = nl.item(i).getTextContent();
}
} catch (Exception e) {
errorCode=2;
errorCodeDescription+="Внутренняя ошибка сервера, настройки. ";
e.printStackTrace();
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
} catch (Exception ex) {
errorCode=3;
errorCodeDescription+="Внутренняя ошибка сервера, база. ";
ex.printStackTrace();
}
JSONArray array=new JSONArray(); //Результирующий набор данных
String image_name1=null,image_name2=null,image_name3=null;
String sql_query = "";
Statement stt=null;
ResultSet rs=null;
try {
stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
sql_query = "select id,image_name1,image_name2,image_name3 from main.frmlocust where id="+String.valueOf(id);
rs = stt.executeQuery(sql_query);
if (rs != null) {
try {
while(rs.next()) {
image_name1=rs.getString("image_name1");
image_name2=rs.getString("image_name2");
image_name3=rs.getString("image_name3");
}
rs.close();
} catch (SQLException ex) {
errorCode=3;
errorCodeDescription+="Внутренняя ошибка сервера (поля). ";
ex.printStackTrace();
}
}
} catch (SQLException ex) {
errorCode=3;
errorCodeDescription+="Внутренняя ошибка сервера, запрос. ";
ex.printStackTrace();
}finally {
if(rs!=null) try{rs.close();}catch(SQLException ex){}
if(stt!=null) try{stt.close();}catch(SQLException ex){}
}
if(image_name1!=null) {
String data = getBase64FromFile(data_dir+"data/frmlocust/"+image_name1);
if(data!=null) { //Удалось найти файл локально
JSONObject obj = new JSONObject();
obj.put("name", image_name1);
obj.put("data", data);
array.put(obj);
}else { //Пытаемся найти на другом сервера
data=getBase64FromURL("http://data.ccalm.org/photo/?table=frmlocust&file="+image_name1);
if(data!=null) { //Если скачали с удаленного сервера
JSONObject obj = new JSONObject();
obj.put("name", image_name1);
obj.put("data", data);
array.put(obj);
}
}
}
if(image_name2!=null) {
String data = getBase64FromFile(data_dir+"data/frmlocust/"+image_name2);
if(data!=null) { //Удалось найти файл локально
JSONObject obj = new JSONObject();
obj.put("name", image_name1);
obj.put("data", data);
array.put(obj);
}else { //Пытаемся найти на другом сервера
data=getBase64FromURL("http://data.ccalm.org/photo/?table=frmlocust&file="+image_name2);
if(data!=null) { //Если скачали с удаленного сервера
JSONObject obj = new JSONObject();
obj.put("name", image_name1);
obj.put("data", data);
array.put(obj);
}
}
}
if(image_name3!=null) {
String data = getBase64FromFile(data_dir+"data/frmlocust/"+image_name3);
if(data!=null) { //Удалось найти файл локально
JSONObject obj = new JSONObject();
obj.put("name", image_name1);
obj.put("data", data);
array.put(obj);
}else { //Пытаемся найти на другом сервера
data=getBase64FromURL("http://data.ccalm.org/photo/?table=frmlocust&file="+image_name3);
if(data!=null) { //Если скачали с удаленного сервера
JSONObject obj = new JSONObject();
obj.put("name", image_name1);
obj.put("data", data);
array.put(obj);
}
}
}
if(errorCode!=0) {
JSONObject obj = new JSONObject();
obj.put("errorCode",errorCode);
obj.put("errorCodeDescription", errorCodeDescription);
return obj.toString();
}else {
return array.toString();
}
}
@Override
public void setServletContext(ServletContext servletContext) {
this.context=servletContext;
}
public String getBase64FromFile(String fName) {
String result=null;
File file = new File(fName);
if(file.exists()) {
try {
byte fileData[] = new byte[(int) file.length()];
try (FileInputStream imageInFile = new FileInputStream(file)) {
imageInFile.read(fileData);
}
result=Base64.getEncoder().encodeToString(fileData);
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
return result;
}
public String getBase64FromURL(String strURL) {
String result=null;
try
{
URL url = new URL(strURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
int responseCode = conn.getResponseCode();
if (responseCode / 100 == 2) //Code 206 is "Partial Content"
{
InputStream inputStream = conn.getInputStream();
int bytesRead;
byte[] buffer = new byte[BUFFER_SIZE];
while ((bytesRead = inputStream.read(buffer)) != -1) {
if(result==null) result="";
byte[] encoded = Base64.getEncoder().encode(Tools.subArray(buffer, 0, bytesRead));
result+=new String(encoded);
}
inputStream.close();
}
conn.disconnect();
}
catch (IOException e)
{
}
return result;
}
}

View File

@ -0,0 +1,354 @@
package kz.locust.CCALM;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.CacheControl;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.multipart.MultipartFile;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import tools.User;
/**
* Handles requests for the application home page.
*/
@Controller
@SessionAttributes( { "user" })
public class Main implements ServletContextAware {
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private ServletContext context;
private Properties m_props=null;
@Override
public void setServletContext(ServletContext context){
this.context=context;
}
//If not created object "user", create him.
@ModelAttribute("user")
public User populatePerson() {
return new User("none");
}
/**
* Simply selects the home view to render by returning its name.
*/
/*@RequestMapping(value = "/test", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
//Date date = new Date();
//DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
//String formattedDate = dateFormat.format(date);
//model.addAttribute("serverTime", formattedDate );
return "index";
}*/
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/privacy", method = RequestMethod.GET)
public String privacy(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
/*Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );*/
return "privacy";
}
@RequestMapping(value = "/robots.txt")
public void robots(HttpServletResponse response) {
try {
response.getWriter().write("User-agent: *\n");
response.getWriter().write("Disallow: /engine/\n");
response.getWriter().write("Disallow: /resources/\n");
response.getWriter().write("Disallow: /test\n");
response.getWriter().write("Sitemap: https://ccalm.org/sitemap.xml\n");
response.getWriter().write("Host: https://ccalm.org\n");
} catch (IOException e) {
logger.info(e.getMessage());
}
}
@RequestMapping(value = "/sitemap.xml")
public void sitemap(HttpServletResponse response) {
try {
response.getWriter().write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n"
+ " <url>\n"
+ " <loc>https://ccalm.org</loc>\n"
+ " </url>\n"
+ "</urlset>\n");
} catch (IOException e) {
logger.info(e.getMessage());
}
}
/**
* Testing new main index page
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home2(@ModelAttribute User user, Model model,@RequestParam(required=false,name="lng") String language_id) {
//logger.info("Welcome home! The client locale is {}.", locale);
if(language_id!=null && !language_id.equals("")) user.language_id=language_id;
logger.info("user.id="+user.id+" user.name="+user.name+" user.language_id="+user.language_id);
String db_url="";
String db_login="";
String db_password="";
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
e.printStackTrace();
}
//Get language from database
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
System.out.println("Connect is OK!");
}else
{
System.out.println("<br>Connect is ERROR<br>");
}
}catch(Exception e)
{
System.out.println("<br>Connect Exception:"+e.getMessage()+"<br>");
}
try {
Statement st = conn.createStatement();
ResultSet rs=null;
if(user.id!=null){
if(language_id!=null && !language_id.equals(""))
{
//Set the language for the current user if it is transferred.
user.language_id=language_id;
try {
st.execute("update main._users set language_id='"+user.language_id+"' where id="+user.id);
} catch( SQLException ex )
{
System.out.println("<br>SQLException:"+ex.getMessage()+"<br>");
}
}
//Select language for current user
try {
String sql="select language_id,country_id from main._users u where u.id="+String.valueOf(user.id)+";";
rs = st.executeQuery(sql);
} catch( SQLException ex )
{
System.out.println("<br>SQLException:"+ex.getMessage()+"<br>");
}
if(rs!=null)
{
while (rs.next())
{
user.language_id = rs.getString("language_id");
user.country_id = rs.getString("country_id");
}
}
}
st.close();
} catch( SQLException ex )
{
System.out.println("<br>SQLException:"+ex.getMessage()+"<br>");
}
//Send user name and role
model.addAttribute("uName",user.name+" ("+user.role+")");
model.addAttribute("m_locale",user.language_id);
model.addAttribute("country_id",user.country_id);
//Для перевода выбираю всё что под номером 1 в переводе
try {
m_props = new Properties();
Statement stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String sql_query = "select identifier,case when '"+user.language_id+"'='666' then translation||'''\"' else translation end as translation from main._translations t where t.del=false and (t.language_id='"+user.language_id+"' or ('"+user.language_id+"'='666' and t.language_id=1)) and translation_type_id=1;";
ResultSet rs = stt.executeQuery(sql_query);
if (rs != null) {
while (rs.next())
{
String identifier = rs.getString("identifier");
String translation = rs.getString("translation");
m_props.setProperty(identifier, translation);
}
rs.close();
}
stt.close();
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
Set<Object> keys = m_props.keySet();
for(Object k:keys){
String key = (String)k;
String val="";
if(val.equals(""))
{
val = m_props.getProperty(key,"");
if(val.equals(""))
{
val = val.replaceAll("_", " ");
}
}
model.addAttribute(key,val);
}
try{ conn.close(); }catch(Exception e){}
return "index";
//return "test";
}
//Returns data for building a map on the first index page
@RequestMapping(value = "/dataindex",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json; charset=utf-8")
@ResponseBody
public Object ajaxIndexData(HttpServletResponse response,@ModelAttribute User user,@RequestParam(required=false,name="date_start",defaultValue = "null") String date_start,@RequestParam(required=false,name="date_end",defaultValue = "null") String date_end, @RequestParam(required=false,name="lng") String language_id) {
String headerValue = CacheControl.maxAge(60, TimeUnit.SECONDS).getHeaderValue();
response.addHeader("Cache-Control", headerValue);
JSONObject result = new JSONObject();
JSONArray array=new JSONArray();
String db_url="";
String db_login="";
String db_password="";
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
e.printStackTrace();
}
//Connect to database
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
System.out.println("Connect is OK!");
}else
{
System.out.println("<br>Connect is ERROR<br>");
}
}catch(Exception e)
{
System.out.println("<br>Connect Exception:"+e.getMessage()+"<br>");
}
String sql;
sql = "select * from main.p_dataindex(to_timestamp("+date_start+")::timestamp without time zone,to_timestamp("+date_end+")::timestamp without time zone);";
ResultSet rs = null;
try {
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
logger.info(ex.getMessage());
ex.printStackTrace();
}
try {
while (rs.next()) {
JSONObject rsRez = new JSONObject();
rsRez.put("id",rs.getInt("id"));
rsRez.put("lon",rs.getDouble("lon"));
rsRez.put("lat",rs.getDouble("lat"));
rsRez.put("type",rs.getInt("type"));
rsRez.put("terrain",rs.getString("terrain"));
array.put(rsRez);
}
} catch (SQLException ex) {
logger.info(ex.getMessage());
ex.printStackTrace();
}
result.put("ErrorCode", "0");
result.put("ErrorMessage", "");
result.put("data", array);
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
}
}
return result.toString();
}
}

View File

@ -0,0 +1,697 @@
package kz.locust.CCALM;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONException;
import tools.PreparedStatementNamed;
import tools.User;
@Controller
@SessionAttributes( { "user" }) //Сесионный объект
public class Products implements ServletContextAware {
private static final Logger logger = LoggerFactory.getLogger(Products.class);
private ServletContext context;
//If not created object "user", create him.
@ModelAttribute("user")
public User populatePerson() {
return new User("none");
}
@RequestMapping(value = "/get_survey",method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public String getLocustSurvey(@ModelAttribute User user,@RequestBody(required=false) byte[] reqData,@RequestParam(required=false,name="lng") String language_id) {
int errorCode=0;
String errorMessage="";
//Load configuration from "config.xml"
String db_url = "";
String db_login = "";
String db_password = "";
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
}
} catch (Exception ex) {
errorCode=1;
errorMessage+="Internal server error, settings.";
logger.info(ex.getMessage());
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
if (conn != null) {
logger.info("Connect is OK!");
} else {
errorCode=1;
errorMessage+="An error occurred while connecting to the database!";
}
} catch (Exception ex) {
logger.info(ex.getMessage());
errorCode=1;
errorMessage+="An error occurred while connecting to the database!";
}
try {
Statement stt0 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
//st.executeUpdate("SET TIME ZONE 'UTC';"); зачем коментил?
stt0.executeUpdate("SET TIME ZONE 'Asia/Almaty';"); //Зачем раскоментил? может в начале поставить ещё TimeZone.setDefault(TimeZone.getTimeZone("UTC")); ?
stt0.close();
} catch (SQLException ex) {
logger.info(ex.getMessage());
errorCode=1;
errorMessage+="Failed to execute SQL query!";
}
JSONObject doc=null;
InputStream body;
if(reqData!=null) {
body = new ByteArrayInputStream(reqData);
String text="";
try {
text = new String(body.readAllBytes(), StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
logger.info(text);
//JSONParser jsonParser = new JSONParser();
//doc = (JSONObject)jsonParser.parse(text);
//doc = new JSONObject(body);
doc = new JSONObject(text);
}
JSONArray array=new JSONArray(); //Результирующий набор данных
String sql_query = "";
Statement stt=null;
ResultSet rs=null;
try {
stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
sql_query = "select id,"
+ " lat1,"
+ " lon1,"
+ " lat2,"
+ " lon2,"
+ " lat3,"
+ " lon3,"
+ " lat4,"
+ " lon4,"
+ " lat5,"
+ " lon5,"
+ " lat6,"
+ " lon6,"
+ " terrain,"
+ " locust_populated,"
+ " eggs_capsules_density,"
+ " eggs_capsules_density_to,"
+ " imago_density,"
+ " larva_density,"
+ " larva_density_to,"
+ " kuliguli_size,"
+ " CASE swarm_maturity WHEN true THEN 1 WHEN false THEN 0 ELSE null END as swarm_maturity,"
+ " swarm_density_id,"
+ " ST_AsGeoJSON(geom) as geom"
+ " from main.frmlocust fl where"
+ " fl.del=false"
+ " and (${country_id} is null or (${country_id}=-1 and fl.country_id in (7,3,4,2)) or (${country_id}=-2 and fl.country_id in (7,1,5,6,8,9,10)) or ${country_id}=fl.country_id)"
+ " and (${region_id} is null or ${region_id}=fl.region_id)"
+ " and (${locust_type_id} is null or ${locust_type_id}=fl.locust_type_id)"
+ " and (${date_start} is null or to_timestamp(${date_start})<=fl.date)"
+ " and (${date_end} is null or to_timestamp(${date_end})>=fl.date)"
+ " and (${device_id} is null or (${device_id} and fl.device_id is not null) or (not ${device_id} and fl.device_id is null))"
+ " and (${registered} is null or (${registered} and (fl.device_id is null or fl.device_id in (select serial from main.terminals where del=false))) or (not ${registered} and (fl.device_id not in (select serial from main.terminals where del=false))))"
+ " and ((${test} is null and (test!=true or test is null)) or ${test}=fl.test)"
+ " order by fl.id desc;";
PreparedStatementNamed stmtn = new PreparedStatementNamed(conn, sql_query);
if(doc!=null) {
stmtn.setInt("_user_id", Integer.parseInt(user.id));
if(doc.isNull("country_id")) stmtn.setNULLInt("country_id");
else stmtn.setInt("country_id",doc.getInt("country_id"));
if(doc.isNull("region_id")) stmtn.setNULLInt("region_id");
else stmtn.setInt("region_id",doc.getInt("region_id"));
if(doc.isNull("locust_type_id")) stmtn.setNULLInt("locust_type_id");
else stmtn.setInt("locust_type_id",doc.getInt("locust_type_id"));
if(doc.isNull("date_start")) stmtn.setNULLInt("date_start");
else stmtn.setInt("date_start",doc.getInt("date_start"));
if(doc.isNull("date_end")) stmtn.setNULLInt("date_end");
else stmtn.setInt("date_end",doc.getInt("date_end"));
if(doc.isNull("device_id")) stmtn.setNULLBoolean("device_id");
else stmtn.setBoolean("device_id",doc.getInt("device_id"));
if(doc.isNull("registered")) stmtn.setNULLBoolean("registered");
else stmtn.setBoolean("registered",doc.getInt("registered"));
if(doc.isNull("test")) stmtn.setNULLBoolean("test");
else stmtn.setBoolean("test",doc.getInt("test"));
}
PreparedStatement stmt=stmtn.getPreparedStatement();
rs = stmt.executeQuery();
if (rs != null) {
try {
while(rs.next()) {
JSONObject obj = new JSONObject();
obj.put("id", rs.getLong("id"));
if(rs.getObject("terrain")!=null)
obj.put("terrain", rs.getString("terrain"));
if(rs.getObject("locust_populated")!=null)
obj.put("locust_populated", rs.getFloat("locust_populated"));
if(rs.getObject("eggs_capsules_density")!=null)
obj.put("eggs_capsules_density", rs.getFloat("eggs_capsules_density"));
if(rs.getObject("eggs_capsules_density_to")!=null)
obj.put("eggs_capsules_density_to", rs.getFloat("eggs_capsules_density_to"));
if(rs.getObject("imago_density")!=null)
obj.put("imago_density", rs.getFloat("imago_density"));
if(rs.getObject("larva_density")!=null)
obj.put("larva_density", rs.getFloat("larva_density"));
if(rs.getObject("larva_density_to")!=null)
obj.put("larva_density_to", rs.getFloat("larva_density_to"));
if(rs.getObject("kuliguli_size")!=null)
obj.put("kuliguli_size", rs.getFloat("kuliguli_size"));
if(rs.getObject("swarm_maturity")!=null)
obj.put("swarm_maturity", rs.getString("swarm_maturity"));
if(rs.getObject("swarm_density_id")!=null)
obj.put("swarm_density_id", rs.getInt("swarm_density_id"));
//obj.put("town_name", rs.getString("town_name")); //Район
//obj.put("date", rs.getString("date")); //Дата анкетирования
//obj.put("surveyed_area", rs.getDouble("surveyed_area")); //Обследованная площадь га
double lat=0;
double lon=0;
int cnt1=0;
if(rs.getString("lat1")!=null && rs.getString("lon1")!=null && rs.getFloat("lat1")!=0 && rs.getFloat("lon1")!=0) {
lat+=rs.getDouble("lat1");
lon+=rs.getDouble("lon1");
cnt1++;
}
if(rs.getString("lat2")!=null && rs.getString("lon2")!=null && rs.getFloat("lat2")!=0 && rs.getFloat("lon2")!=0) {
lat+=rs.getDouble("lat2");
lon+=rs.getDouble("lon2");
cnt1++;
}
if(rs.getString("lat3")!=null && rs.getString("lon3")!=null && rs.getFloat("lat3")!=0 && rs.getFloat("lon3")!=0) {
lat+=rs.getDouble("lat3");
lon+=rs.getDouble("lon3");
cnt1++;
}
if(rs.getString("lat4")!=null && rs.getString("lon4")!=null && rs.getFloat("lat4")!=0 && rs.getFloat("lon4")!=0) {
lat+=rs.getDouble("lat4");
lon+=rs.getDouble("lon4");
cnt1++;
}
if(rs.getString("lat5")!=null && rs.getString("lon5")!=null && rs.getFloat("lat5")!=0 && rs.getFloat("lon5")!=0) {
lat+=rs.getDouble("lat5");
lon+=rs.getDouble("lon5");
cnt1++;
}
if(rs.getString("lat6")!=null && rs.getString("lon6")!=null && rs.getFloat("lat6")!=0 && rs.getFloat("lon6")!=0) {
lat+=rs.getDouble("lat6");
lon+=rs.getDouble("lon6");
cnt1++;
}
if(cnt1>0) {
lat=lat/cnt1;
lon=lon/cnt1;
}
obj.put("lat", lat);
obj.put("lon", lon);
boolean point=cnt1<=2;
JSONObject geom = null;
if(rs.getString("geom")!=null)
{
try {
geom = new JSONObject(rs.getString("geom"));
}catch (JSONException err){
}
}else {
if(point) {
/*geom = new JSONObject();
geom.put("type","Point");
JSONArray crdSub=new JSONArray();
crdSub.put(rs.getDouble("lon1"));
crdSub.put(rs.getDouble("lat1"));
geom.put("coordinates", crdSub);*/
}else {
geom = new JSONObject();
geom.put("type","Polygon");
JSONArray crdMain=new JSONArray();
JSONArray crdSub=new JSONArray();
crdMain.put(crdSub);
if(rs.getString("lat1")!=null && rs.getString("lon1")!=null && rs.getFloat("lat1")!=0 && rs.getFloat("lon1")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon1"));
crd.put(rs.getDouble("lat1"));
crdSub.put(crd);
}
if(rs.getString("lat2")!=null && rs.getString("lon2")!=null && rs.getFloat("lat2")!=0 && rs.getFloat("lon2")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon2"));
crd.put(rs.getDouble("lat2"));
crdSub.put(crd);
}
if(rs.getString("lat3")!=null && rs.getString("lon3")!=null && rs.getFloat("lat3")!=0 && rs.getFloat("lon3")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon3"));
crd.put(rs.getDouble("lat3"));
crdSub.put(crd);
}
if(rs.getString("lat4")!=null && rs.getString("lon4")!=null && rs.getFloat("lat4")!=0 && rs.getFloat("lon4")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon4"));
crd.put(rs.getDouble("lat4"));
crdSub.put(crd);
}
if(rs.getString("lat5")!=null && rs.getString("lon5")!=null && rs.getFloat("lat5")!=0 && rs.getFloat("lon5")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon5"));
crd.put(rs.getDouble("lat5"));
crdSub.put(crd);
}
if(rs.getString("lat6")!=null && rs.getString("lon6")!=null && rs.getFloat("lat6")!=0 && rs.getFloat("lon6")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon6"));
crd.put(rs.getDouble("lat6"));
crdSub.put(crd);
}
geom.put("coordinates", crdMain);
}
}
if(geom!=null)
obj.put("geom", geom);
array.put(obj);
}
rs.close();
} catch (SQLException ex) {
errorCode=4;
errorMessage+="Internal server error, sampling.";
ex.printStackTrace();
logger.info(ex.getMessage());
}
}
} catch (SQLException ex) {
errorCode=5;
errorMessage+="Внутренняя ошибка сервера, запрос. ";
ex.printStackTrace();
logger.info(ex.getMessage());
}finally {
if(rs!=null) try{rs.close();}catch(SQLException ex){}
if(stt!=null) try{stt.close();}catch(SQLException ex){}
}
if(errorCode!=0) {
JSONObject obj = new JSONObject();
obj.put("errorCode",errorCode);
obj.put("errorMessage", errorMessage);
return obj.toString();
}else {
JSONObject obj = new JSONObject();
obj.put("errorCode",0);
obj.put("errorMessage", "");
if(doc!=null)
obj.put("indicator",doc.getString("indicator"));
obj.put("data",array);
return obj.toString();
}
}
@RequestMapping(value = "/get_spray",method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public String getSprayMonitoring(@ModelAttribute User user,@RequestBody byte[] reqData,@RequestParam(required=false,name="lng") String language_id) {
int errorCode=0;
String errorMessage="";
//Load configuration from "config.xml"
String db_url = "";
String db_login = "";
String db_password = "";
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
}
} catch (Exception ex) {
errorCode=1;
errorMessage+="Internal server error, settings.";
logger.info(ex.getMessage());
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
if (conn != null) {
logger.info("Connect is OK!");
} else {
errorCode=1;
errorMessage+="An error occurred while connecting to the database!";
}
} catch (Exception ex) {
logger.info(ex.getMessage());
errorCode=1;
errorMessage+="An error occurred while connecting to the database!";
}
try {
Statement stt0 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
//st.executeUpdate("SET TIME ZONE 'UTC';"); зачем коментил?
stt0.executeUpdate("SET TIME ZONE 'Asia/Almaty';");
stt0.close();
} catch (SQLException ex) {
logger.info(ex.getMessage());
errorCode=1;
errorMessage+="Failed to execute SQL query!";
}
JSONObject doc=null;
InputStream body;
if(reqData!=null) {
body = new ByteArrayInputStream(reqData);
String text="";
try {
text = new String(body.readAllBytes(), StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
logger.info(text);
//JSONParser jsonParser = new JSONParser();
//doc = (JSONObject)jsonParser.parse(text);
//doc = new JSONObject(body);
doc = new JSONObject(text);
}
JSONArray array=new JSONArray(); //Результирующий набор данных
String sql_query = "";
Statement stt=null;
ResultSet rs=null;
try {
stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
sql_query = "select id,"
+ " lat_center,"
+ " lon_center,"
+ " lat1,"
+ " lon1,"
+ " lat2,"
+ " lon2,"
+ " lat3,"
+ " lon3,"
+ " lat4,"
+ " lon4,"
+ " lat5,"
+ " lon5,"
+ " lat6,"
+ " lon6,"
+ " terrain,"
+ " treated_area,"
+ " infested_area,"
+ " ST_AsGeoJSON(geom) as geom"
+ " from main.frmlocustdel fld where"
+ " fld.del=false"
+ " and (${country_id} is null or (${country_id}=-1 and fld.country_id in (7,3,4,2)) or (${country_id}=-2 and fld.country_id in (7,1,5,6,8,9,10)) or ${country_id}=fld.country_id)"
+ " and (${region_id} is null or ${region_id}=fld.region_id)"
+ " and (${date_start} is null or to_timestamp(${date_start})<=fld.date)"
+ " and (${date_end} is null or to_timestamp(${date_end})>=fld.date)"
+ " and (${device_id} is null or (${device_id} and fld.device_id is not null) or (not ${device_id} and fld.device_id is null))"
+ " and (${registered} is null or (${registered} and (fld.device_id is null or fld.device_id in (select serial from main.terminals where del=false))) or (not ${registered} and (fld.device_id not in (select serial from main.terminals where del=false))))"
+ " and ((${test} is null and (test!=true or test is null)) or ${test}=fld.test)"
+ " order by fld.id desc;";
PreparedStatementNamed stmtn = new PreparedStatementNamed(conn, sql_query);
if(doc!=null) {
stmtn.setInt("_user_id", Integer.parseInt(user.id));
if(doc.isNull("country_id")) stmtn.setNULLInt("country_id");
else stmtn.setInt("country_id",doc.getInt("country_id"));
if(doc.isNull("region_id")) stmtn.setNULLInt("region_id");
else stmtn.setInt("region_id",doc.getInt("region_id"));
if(doc.isNull("locust_type_id")) stmtn.setNULLInt("locust_type_id");
else stmtn.setInt("locust_type_id",doc.getInt("locust_type_id"));
if(doc.isNull("date_start")) stmtn.setNULLInt("date_start");
else stmtn.setInt("date_start",doc.getInt("date_start"));
if(doc.isNull("date_end")) stmtn.setNULLInt("date_end");
else stmtn.setInt("date_end",doc.getInt("date_end"));
if(doc.isNull("device_id")) stmtn.setNULLBoolean("device_id");
else stmtn.setBoolean("device_id",doc.getInt("device_id"));
if(doc.isNull("registered")) stmtn.setNULLBoolean("registered");
else stmtn.setBoolean("registered",doc.getInt("registered"));
if(doc.isNull("test")) stmtn.setNULLBoolean("test");
else stmtn.setBoolean("test",doc.getInt("test"));
}
PreparedStatement stmt=stmtn.getPreparedStatement();
rs = stmt.executeQuery();
if (rs != null) {
try {
while(rs.next()) {
JSONObject obj = new JSONObject();
obj.put("id", rs.getLong("id"));
if(rs.getObject("terrain")!=null)
obj.put("terrain", rs.getString("terrain"));
if(rs.getObject("treated_area")!=null)
obj.put("treated_area", rs.getFloat("treated_area"));
if(rs.getObject("infested_area")!=null)
obj.put("infested_area", rs.getFloat("infested_area"));
double lat=0;
double lon=0;
int cnt1=0;
if(rs.getString("lat1")!=null && rs.getString("lon1")!=null && rs.getFloat("lat1")!=0 && rs.getFloat("lon1")!=0) {
lat+=rs.getDouble("lat1");
lon+=rs.getDouble("lon1");
cnt1++;
}
if(rs.getString("lat2")!=null && rs.getString("lon2")!=null && rs.getFloat("lat2")!=0 && rs.getFloat("lon2")!=0) {
lat+=rs.getDouble("lat2");
lon+=rs.getDouble("lon2");
cnt1++;
}
if(rs.getString("lat3")!=null && rs.getString("lon3")!=null && rs.getFloat("lat3")!=0 && rs.getFloat("lon3")!=0) {
lat+=rs.getDouble("lat3");
lon+=rs.getDouble("lon3");
cnt1++;
}
if(rs.getString("lat4")!=null && rs.getString("lon4")!=null && rs.getFloat("lat4")!=0 && rs.getFloat("lon4")!=0) {
lat+=rs.getDouble("lat4");
lon+=rs.getDouble("lon4");
cnt1++;
}
if(rs.getString("lat5")!=null && rs.getString("lon5")!=null && rs.getFloat("lat5")!=0 && rs.getFloat("lon5")!=0) {
lat+=rs.getDouble("lat5");
lon+=rs.getDouble("lon5");
cnt1++;
}
if(rs.getString("lat6")!=null && rs.getString("lon6")!=null && rs.getFloat("lat6")!=0 && rs.getFloat("lon6")!=0) {
lat+=rs.getDouble("lat6");
lon+=rs.getDouble("lon6");
cnt1++;
}
//lat=lat/cnt1;
//lon=lon/cnt1;
lat=rs.getDouble("lat_center");
lon=rs.getDouble("lon_center");
obj.put("lat", lat);
obj.put("lon", lon);
boolean point=cnt1<=2;
JSONObject geom = null;
if(rs.getString("geom")!=null)
{
try {
geom = new JSONObject(rs.getString("geom"));
}catch (JSONException err){
}
}else {
if(point) {
/*geom = new JSONObject();
geom.put("type","Point");
JSONArray crdSub=new JSONArray();
crdSub.put(rs.getDouble("lon1"));
crdSub.put(rs.getDouble("lat1"));
geom.put("coordinates", crdSub);*/
}else {
geom = new JSONObject();
geom.put("type","Polygon");
JSONArray crdMain=new JSONArray();
JSONArray crdSub=new JSONArray();
crdMain.put(crdSub);
if(rs.getString("lat1")!=null && rs.getString("lon1")!=null && rs.getFloat("lat1")!=0 && rs.getFloat("lon1")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon1"));
crd.put(rs.getDouble("lat1"));
crdSub.put(crd);
}
if(rs.getString("lat2")!=null && rs.getString("lon2")!=null && rs.getFloat("lat2")!=0 && rs.getFloat("lon2")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon2"));
crd.put(rs.getDouble("lat2"));
crdSub.put(crd);
}
if(rs.getString("lat3")!=null && rs.getString("lon3")!=null && rs.getFloat("lat3")!=0 && rs.getFloat("lon3")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon3"));
crd.put(rs.getDouble("lat3"));
crdSub.put(crd);
}
if(rs.getString("lat4")!=null && rs.getString("lon4")!=null && rs.getFloat("lat4")!=0 && rs.getFloat("lon4")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon4"));
crd.put(rs.getDouble("lat4"));
crdSub.put(crd);
}
if(rs.getString("lat5")!=null && rs.getString("lon5")!=null && rs.getFloat("lat5")!=0 && rs.getFloat("lon5")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon5"));
crd.put(rs.getDouble("lat5"));
crdSub.put(crd);
}
if(rs.getString("lat6")!=null && rs.getString("lon6")!=null && rs.getFloat("lat6")!=0 && rs.getFloat("lon6")!=0) {
JSONArray crd=new JSONArray();
crd.put(rs.getDouble("lon6"));
crd.put(rs.getDouble("lat6"));
crdSub.put(crd);
}
geom.put("coordinates", crdMain);
}
}
if(geom!=null)
obj.put("geom", geom);
array.put(obj);
}
rs.close();
} catch (SQLException ex) {
errorCode=4;
errorMessage+="Internal server error, sampling.";
ex.printStackTrace();
logger.info(ex.getMessage());
}
}
} catch (SQLException ex) {
errorCode=5;
errorMessage+="Внутренняя ошибка сервера, запрос. ";
ex.printStackTrace();
logger.info(ex.getMessage());
}finally {
if(rs!=null) try{rs.close();}catch(SQLException ex){}
if(stt!=null) try{stt.close();}catch(SQLException ex){}
}
if(errorCode!=0) {
JSONObject obj = new JSONObject();
obj.put("errorCode",errorCode);
obj.put("errorMessage", errorMessage);
return obj.toString();
}else {
JSONObject obj = new JSONObject();
obj.put("errorCode",0);
obj.put("errorMessage", "");
obj.put("data",array);
return obj.toString();
}
}
@Override
public void setServletContext(ServletContext servletContext) {
this.context=servletContext;
}
}

View File

@ -0,0 +1,498 @@
package kz.locust.CCALM;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import tctable.Tools;
import tools.User;
@Controller
@SessionAttributes( { "user" })
public class QGIS implements ServletContextAware {
private static final Logger logger = LoggerFactory.getLogger(QGIS.class);
private ServletContext context;
private Properties m_props=null;
private String m_props_loc="";
public String m_locale="ru";
//If not created object "user", create him.
@ModelAttribute("user")
public User populatePerson() {
return new User("none");
}
@RequestMapping(value = "/QGIS",method = RequestMethod.GET,produces = "application/octet-stream")
@ResponseBody
public HttpEntity<byte[]> ajaxTamer(@ModelAttribute User user,@RequestParam(required=false,name="day") String day,@RequestParam(required=false,name="name") String name,@RequestParam(required=false,name="time") String time,@RequestParam(required=false,name="time_start") String time_start,@RequestParam(required=false,name="time_end") String time_end,@RequestParam(required=false,name="country_id") String country_id,@RequestParam(required=false,name="locust_type_id") String locust_type_id,@RequestParam(required=false,name="date_start") String date_start,@RequestParam(required=false,name="date_end") String date_end,@RequestParam(required=false,name="registered") String registered,@RequestParam(required=false,name="year") String year,@RequestParam(required=false,name="region_id") String region_id,@RequestParam(required=false,name="country_name") String country_name,@RequestParam(required=false,name="lng") String language_id,HttpServletResponse response)
{
if(language_id!=null && !language_id.equals("")) user.language_id=language_id;
logger.info("user.id="+user.id+" user.name="+user.name+" user.language_id="+user.language_id);
m_locale=user.language_id;
String db_url = "";
String db_login = "";
String db_password = "";
//Load DB configuration from "config.xml"
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
}
} catch (Exception ex) {
logger.info(ex.getMessage());
}
Connection conn = null;
try {
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url, db_login, db_password);
if (conn != null) {
logger.info("Connect is OK!");
}
} catch (Exception ex) {
logger.info(ex.getMessage());
}
//Return content QGIS file.
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename="+name+".qgs");
String fileAsString="";
//Pods (кубышки)
if(name!=null && (name.equals("frmlocust_pods_density") || name.equals("frmlocust_hoppers_density") || name.equals("frmlocust_bands") || name.equals("frmlocust_adults_density") || name.equals("frmlocust_swarms")))
{
fileAsString = fileToString(context.getRealPath("/resources/QGIS/" + name + ".qgs"));
//String country_id=request.getParameter("country_id");
//String locust_type_id=request.getParameter("locust_type_id");
//String date_start=request.getParameter("date_start");
//String date_end=request.getParameter("date_end");
//String registered=request.getParameter("registered");
//Make SQL
String sql = "1=1";
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
if(country_id.equals("-1"))
{
sql+=" and country_id in (7,3,4,2)";
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql+=" and country_id in (7,1,5,6,8,9,10)";
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql+=" and country_id="+country_id;
sql2+=" and country_id="+country_id;
}
}
if(locust_type_id!=null && !locust_type_id.equals(""))
{
sql+=" and locust_type_id="+locust_type_id;
}
if(date_start!=null && !date_start.equals(""))
{
sql+=" and date>='"+date_start+"'";
}
if(date_end!=null && !date_end.equals(""))
{
sql+=" and date&lt;='"+date_end+"'";
}
if(registered!=null && registered.equals("1"))
{
sql+=" and registered=true";
}else
if(registered!=null && registered.equals("0"))
{
sql+=" and registered=false";
}
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{sql\\}",sql);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
}
if(name!=null && name.equals("frmlocustdel"))
{
fileAsString = fileToString(context.getRealPath("/resources/QGIS/" + name + ".qgs"));
//String country_id=request.getParameter("country_id");
//String date_start=request.getParameter("date_start");
//String date_end=request.getParameter("date_end");
//String registered=request.getParameter("registered");
//Make SQL
String sql = "1=1";
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
//sql+=" and country_id="+country_id;
if(country_id.equals("-1"))
{
sql+=" and country_id in (7,3,4,2)";
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql+=" and country_id in (7,1,5,6,8,9,10)";
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql+=" and country_id="+country_id;
sql2+=" and country_id="+country_id;
}
}
if(date_start!=null && !date_start.equals(""))
{
sql+=" and date>='"+date_start+"'";
}
if(date_end!=null && !date_end.equals(""))
{
sql+=" and date&lt;='"+date_end+"'";
}
if(registered!=null && registered.equals("1"))
{
sql+=" and registered=true";
}else
if(registered!=null && registered.equals("0"))
{
sql+=" and registered=false";
}
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{sql\\}",sql);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
}
if(name!=null && (name.equals("frmlocustinfo_p2") || name.equals("frmlocustinfo_p3") || name.equals("frmlocustinfo_p4")))
{
//String country_id=request.getParameter("country_id");
//String year=request.getParameter("year");
//String locust_type_id=request.getParameter("locust_type_id");
//Make SQL
String sql = "1=1";
if(country_id!=null && !country_id.equals(""))
{
if(country_id.equals("-1"))
{
sql+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql+=" and country_id="+country_id;
}
}
if(locust_type_id!=null && !locust_type_id.equals(""))
{
sql+=" and locust_type_id="+locust_type_id;
}
fileAsString = fileToString(context.getRealPath("/resources/QGIS/" + name + ".qgs"));
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{year\\}",year);
fileAsString=fileAsString.replaceAll("\\$\\{sql\\}",sql);
}
if(name!=null && (name.equals("frmlocustinfo_p2r") || name.equals("frmlocustinfo_p3r") || name.equals("frmlocustinfo_p4r")))
{
//String region_id=request.getParameter("region_id");
//String year=request.getParameter("year");
//String locust_type_id=request.getParameter("locust_type_id");
//Make SQL
String sql = "1=1";
if(region_id!=null && !region_id.equals(""))
{
sql+=" and region_id="+region_id;
}
if(locust_type_id!=null && !locust_type_id.equals(""))
{
sql+=" and locust_type_id="+locust_type_id;
}
fileAsString = fileToString(context.getRealPath("/resources/QGIS/" + name + ".qgs"));
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{year\\}",year);
fileAsString=fileAsString.replaceAll("\\$\\{sql\\}",sql);
}
if(name!=null && name.equals("soil_temperature"))
{
//Make SQL
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
if(country_id.equals("-1"))
{
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql2+=" and country_id="+country_id;
}
}
fileAsString = fileToString(context.getRealPath("/resources/QGIS/" + name + ".qgs"));
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{country\\}",country_name);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
fileAsString=fileAsString.replaceAll("\\$\\{time\\}",time);
}
if(name!=null && name.equals("air_temperature"))
{
//Make SQL
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
if(country_id.equals("-1"))
{
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql2+=" and country_id="+country_id;
}
}
fileAsString = fileToString(context.getRealPath("/resources/QGIS/" + name + ".qgs"));
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{country\\}",country_name);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
fileAsString=fileAsString.replaceAll("\\$\\{time\\}",time);
}
if(name!=null && name.equals("precipitation"))
{
//Make SQL
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
if(country_id.equals("-1"))
{
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql2+=" and country_id="+country_id;
}
}
fileAsString = fileToString(context.getRealPath("/resources/QGIS/" + name + ".qgs"));
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{country\\}",country_name);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
fileAsString=fileAsString.replaceAll("\\$\\{time\\}",time);
}
if(name!=null && name.equals("htc_selyaninov"))
{
//Make SQL
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
if(country_id.equals("-1"))
{
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql2+=" and country_id="+country_id;
}
}
fileAsString = fileToString(context.getRealPath("/resources/QGIS/" + name + ".qgs"));
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{country\\}",country_name);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
fileAsString=fileAsString.replaceAll("\\$\\{time_start\\}",time_start);
fileAsString=fileAsString.replaceAll("\\$\\{time_end\\}",time_end);
}
if(name!=null && name.equals("NDVI"))
{
fileAsString = fileToString(context.getRealPath("/resources/QGIS/NDVI.qgs"));
if(day!=null && day.length()>0)
fileAsString = fileAsString.replaceAll("\\$\\{day\\}",day+"_");
else
fileAsString = fileAsString.replaceAll("\\$\\{day\\}","");
}
if(name!=null && name.equals("NDWI"))
{
fileAsString = fileToString(context.getRealPath("/resources/QGIS/NDWI.qgs"));
if(day!=null && day.length()>0)
fileAsString = fileAsString.replaceAll("\\$\\{day\\}",day+"_");
else
fileAsString = fileAsString.replaceAll("\\$\\{day\\}","");
}
if(name!=null && name.equals("IVI"))
{
fileAsString = fileToString(context.getRealPath("/resources/QGIS/IVI.qgs"));
if(year!=null && year.length()>0)
fileAsString = fileAsString.replaceAll("\\$\\{year\\}",year+"_");
else
fileAsString = fileAsString.replaceAll("\\$\\{year\\}","");
}
if(name!=null && name.equals("NDWI_CMP"))
{
fileAsString = fileToString(context.getRealPath("/resources/QGIS/NDWI_CMP.qgs"));
if(day!=null && day.length()>0)
fileAsString = fileAsString.replaceAll("\\$\\{day\\}",day+"_");
else
fileAsString = fileAsString.replaceAll("\\$\\{day\\}","");
}
if(name!=null && name.equals("NDSI"))
{
fileAsString = fileToString(context.getRealPath("/resources/QGIS/NDSI.qgs"));
if(day!=null && day.length()>0)
fileAsString = fileAsString.replaceAll("\\$\\{day\\}",day+"_");
else
fileAsString = fileAsString.replaceAll("\\$\\{day\\}","");
}
if(name!=null && name.equals("SMAP"))
{
fileAsString = fileToString(context.getRealPath("/resources/QGIS/SMAP.qgs"));
if(day!=null && day.length()>0)
fileAsString = fileAsString.replaceAll("\\$\\{day\\}",day+"_");
else
fileAsString = fileAsString.replaceAll("\\$\\{day\\}","");
}
//Send data
fileAsString=getText(conn,fileAsString,user);
return new HttpEntity<byte[]>(fileAsString.getBytes(), headers);
}
@Override
public void setServletContext(ServletContext servletContext) {
this.context=servletContext;
}
public String fileToString(String fName)
{
StringBuilder sb = new StringBuilder();
try
{
InputStream is = new FileInputStream(fName);
BufferedReader buf = new BufferedReader(new InputStreamReader(is));
String line = buf.readLine();
while(line != null)
{
sb.append(line).append("\n");
line = buf.readLine();
}
buf.close();
}
catch (Exception e){
System.out.println("Error: "+e.getMessage());
}
return sb.toString();
}
public String trt(Connection conn,String key,User user)
{
String result="";
ResultSet rs=null;
Statement st = null;
try {
st = conn.createStatement();
String sql = "select case when '"+user.language_id+"'='666' then translation||'''\"' else translation end as translation from main._translations t where t.identifier='"+key+"' and (t.language_id='"+user.language_id+"' or ('"+user.language_id+"'='666' and t.language_id=1));";
rs = st.executeQuery(sql);
if(rs != null) {
if (rs.next()) {
result = rs.getString(1);
}
}
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}finally{
if(st!=null) try{st.close();}catch(SQLException ex) {}
if(rs!=null) try{rs.close();}catch(SQLException ex) {}
}
if(result.equals(""))
{
result = Tools.replaceAll(key,"_", " ");
}
return result;
}
//Translate text by patterns
public String getText(Connection conn,String text,User user) {
int pos1 = 0;
while (true) {
pos1 = text.indexOf("trt('", pos1);
if (pos1 == -1)
break;
int pos2 = text.indexOf("')", pos1);
if (pos2 == -1)
break;
text = text.substring(0, pos1) + trt(conn,text.substring(pos1 + 5, pos2),user) + text.substring(pos2 + 2);
}
return text;
}
}

View File

@ -0,0 +1,500 @@
package kz.locust.CCALM;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Properties;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.text.SimpleDateFormat;
import java.sql.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import tools.EmailUtility;
import tools.User;
import javax.servlet.ServletContext;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
@Controller
@SessionAttributes( { "user" }) //Сесионный объект
public class SendMail implements ServletContextAware {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SendMail.class);
private ServletContext context;
private Connection m_conn = null;
private User m_user = null;
//private Properties m_props=null;
public String m_locale="en";
//private HashMap<String, Properties> m_props = new HashMap< String, Properties>();
//If not created object "user", create him.
@ModelAttribute("user")
public User populatePerson() {
return new User("none");
}
@RequestMapping(value = "/SendMail",method = RequestMethod.GET,produces = "text/html;charset=UTF-8")
@ResponseBody
public Object send(@ModelAttribute User user,@RequestParam(required=false,name="lng") String language_id) {
m_user = user;
if(language_id!=null && !language_id.equals(""))
user.language_id=language_id;
logger.info("user.id="+user.id+" user.name="+user.name+" user.language_id="+user.language_id+" user.country_id="+user.country_id);
String result="";
//Load DB configuration from "config.xml"
String db_url = "";
String db_login = "";
String db_password = "";
String mail_host = "";
String mail_port = "";
String mail_login = "";
String mail_password = "";
//String data_dir = "";
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
//if (nl.item(i).getNodeName().equals("data-dir"))
// data_dir = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("mail-host"))
mail_host = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("mail-port"))
mail_port = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("mail-login"))
mail_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("mail-password"))
mail_password = nl.item(i).getTextContent();
}
} catch (Exception ex) {
logger.info(ex.getMessage());
}
//Connect to database
try{
Class.forName("org.postgresql.Driver");
m_conn = DriverManager.getConnection(db_url,db_login,db_password);
if(m_conn!=null)
{
logger.info("Connect is OK!");
result+="Connect is OK!<br>";
}else
{
logger.info("<br>Connect is ERROR<br>");
result+="Connect is ERROR!<br>";
}
}catch(Exception e)
{
logger.info("<br>Connect Exception:"+e.getMessage()+"<br>");
result+="Connect Exception:"+e.getMessage()+"<br>";
}
/*String string = "2016-07-05";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(string);*/
//int Day_s,Day_e;
//int Month_s,Month_e;
//int Year_s,Year_e;
Calendar calendar_s = Calendar.getInstance();
//calendar_s.setTime(date);
calendar_s.set(Calendar.DATE, 1);
calendar_s.add(Calendar.MONTH, -1); //минус месяц
Calendar calendar_e = Calendar.getInstance();
//calendar_e.setTime(date);
calendar_e.set(Calendar.DATE, 1);
String start_t = String.valueOf(calendar_s.getTimeInMillis()/1000);
String end_t = String.valueOf(calendar_e.getTimeInMillis()/1000);
//Формирую сообщение для каждой страны потом присваиваю пользователям из данной страны
String sql1="select c.id,c.name,u.email,l.short_name as language from main.countries c join main._users u on u.country_id=c.id join main._languages l on l.id=u.language_id where u.del=false and u.mailing=true order by c.name;";
Statement st1;
ResultSet rs1=null;
try {
st1 = m_conn.createStatement();
rs1 = st1.executeQuery(sql1);
} catch (SQLException ex) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
if(rs1!=null)
{
try {
while (rs1.next()) //Пробегаюсь по странам и генерю сообщение
{
String html="<html><body>";
String country_id=rs1.getString("id");
String country_name=rs1.getString("name");
m_locale=rs1.getString("language");
String email = rs1.getString("email");
html="<h2>"+country_name+"</h2>";
result+=html+m_locale;
//Build HTML and send it to e-mail
String sql=""
+"select cr.name region_name,coalesce(t1.danger,0) danger,coalesce(t2.attention,0) attention,coalesce(t3.quietly,0) quietly from\n"
+" main.countriesregions cr\n"
+" left join (SELECT region_id,sum(1) as danger from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and COALESCE(fl.eggs_capsules_density, fl.eggs_capsules_density_to)::double precision + COALESCE(fl.eggs_capsules_density_to, fl.eggs_capsules_density)::double precision / 2::double precision > 1 group by region_id) t1 on cr.id=t1.region_id\n"
+" left join (SELECT region_id,sum(1) as attention from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and COALESCE(fl.eggs_capsules_density, fl.eggs_capsules_density_to)::double precision + COALESCE(fl.eggs_capsules_density_to, fl.eggs_capsules_density)::double precision / 2::double precision > 0 and COALESCE(fl.eggs_capsules_density, fl.eggs_capsules_density_to)::double precision + COALESCE(fl.eggs_capsules_density_to, fl.eggs_capsules_density)::double precision / 2::double precision <= 1 group by region_id) t2 on cr.id=t2.region_id\n"
+" left join (SELECT region_id,sum(1) as quietly from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and COALESCE(fl.eggs_capsules_density, fl.eggs_capsules_density_to)::double precision + COALESCE(fl.eggs_capsules_density_to, fl.eggs_capsules_density)::double precision / 2::double precision = 0 group by region_id) t3 on cr.id=t3.region_id\n"
+"where\n"
+" cr.del=false\n"
+" and (t1.danger is not null or t2.attention is not null or t3.quietly is not null)\n"
+" and cr.country_id="+country_id;
Statement st = m_conn.createStatement();
ResultSet rs=null;
try {
rs = st.executeQuery(sql);
} catch( SQLException ex ) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
html+="<h3>"+trt("Egg_pods_density")+"</h3>";
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
html+=trt("From_date")+": "+sdf.format(new Date(Long.parseLong(start_t)*1000));
html+="<br>"+trt("To_date")+": "+sdf.format(new Date(Long.parseLong(end_t)*1000));
html+="<table border=\"1\" style=\"border-collapse: collapse;\">";
html+="<tr style=\"background-color:#dadada;\"><th>"+trt("Oblast")+"</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_r.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Danger")+"\"<br>("+trt("Egg_pods_density")+" > 1)</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_y.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Attention")+"\"<br>("+trt("Egg_pods_density")+" <= 1)</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_g.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Quietly")+"\"<br>("+trt("Egg_pods_density")+" = 0)</th></tr>";
boolean exists=false;
if(rs!=null)
{
while (rs.next())
{
html+="<tr>";
html+="<td>"+rs.getString("region_name")+"</td>";
html+="<td>"+rs.getString("danger")+"</td>";
html+="<td>"+rs.getString("attention")+"</td>";
html+="<td>"+rs.getString("quietly")+"</td>";
html+="</tr>";
exists=true;
}
}
st.close();
if(!exists) html+="<td colspan=\"4\" style=\"text-align:center;font-weight:bold;\">"+trt("No_data")+"</td>";
html+="</table>";
html+="<a target=\"_blank\" href=\"http://ccalm.org/engine/?&cmd=FrmLocust&country_id="+country_id+"&date_start="+sdf.format(new Date(Long.parseLong(start_t)*1000))+"&date_end="+sdf.format(new Date(Long.parseLong(end_t)*1000))+"&registered=1&indicator=1\">"+trt("Open_data_on_the_map")+"</a>";
html+="<br><br>";
//Adult_density
//плотности имаго
sql=""
+" select cr.name region_name,coalesce(t1.danger,0) danger,coalesce(t2.attention,0) attention,coalesce(t3.quietly,0) quietly from\n"
+" main.countriesregions cr\n"
+" left join (SELECT region_id,sum(1) as danger from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and imago_density >= 5 group by region_id) t1 on cr.id=t1.region_id\n"
+" left join (SELECT region_id,sum(1) as attention from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and imago_density >= 3 and imago_density < 5 group by region_id) t2 on cr.id=t2.region_id\n"
+" left join (SELECT region_id,sum(1) as quietly from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and imago_density <= 2 group by region_id) t3 on cr.id=t3.region_id\n"
+"where\n"
+" cr.del=false\n"
+" and (t1.danger is not null or t2.attention is not null or t3.quietly is not null)\n"
+" and cr.country_id="+country_id;
st = m_conn.createStatement();
rs=null;
try {
rs = st.executeQuery(sql);
} catch( SQLException ex ) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
html+="<h3>"+trt("Adult_density")+"</h3>";
html+=trt("From_date")+": "+sdf.format(new Date(Long.parseLong(start_t)*1000));
html+="<br>"+trt("To_date")+": "+sdf.format(new Date(Long.parseLong(end_t)*1000));
html+="<table border=\"1\" style=\"border-collapse: collapse;\">";
html+="<tr style=\"background-color:#dadada;\"><th>"+trt("Oblast")+"</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_r.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Dangerous")+"\"<br>("+trt("Adult_density")+" >=5)</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_y.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Attention")+"\"<br>("+trt("Adult_density")+" >=3 "+trt("and")+" <5)</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_g.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Quietly")+"\"<br>("+trt("Adult_density")+" <=2)</th></tr>";
exists=false;
if(rs!=null)
{
while (rs.next())
{
html+="<tr>";
html+="<td>"+rs.getString("region_name")+"</td>";
html+="<td>"+rs.getString("danger")+"</td>";
html+="<td>"+rs.getString("attention")+"</td>";
html+="<td>"+rs.getString("quietly")+"</td>";
html+="</tr>";
exists=true;
}
}
st.close();
if(!exists) html+="<td colspan=\"5\" style=\"text-align:center;font-weight:bold;\">"+trt("No_data")+"</td>";
html+="</table>";
html+="<a target=\"_blank\" href=\"http://ccalm.org/engine/?&cmd=FrmLocust&country_id="+country_id+"&date_start="+sdf.format(new Date(Long.parseLong(start_t)*1000))+"&date_end="+sdf.format(new Date(Long.parseLong(end_t)*1000))+"&registered=1&indicator=4\">"+trt("Open_data_on_the_map")+"</a>";
html+="<br><br>";
//Hopper_density
sql=""
+" select cr.name region_name,coalesce(t1.danger,0) danger,coalesce(t2.attention,0) attention,coalesce(t3.quietly,0) quietly from\n"
+" main.countriesregions cr\n"
+" left join (SELECT region_id,sum(1) as danger from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and COALESCE(fl.larva_density, fl.larva_density_to)::double precision + COALESCE(fl.larva_density_to, fl.larva_density)::double precision / 2::double precision >= 5 group by region_id) t1 on cr.id=t1.region_id\n"
+" left join (SELECT region_id,sum(1) as attention from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and COALESCE(fl.larva_density, fl.larva_density_to)::double precision + COALESCE(fl.larva_density_to, fl.larva_density)::double precision / 2::double precision >= 3 and COALESCE(fl.larva_density, fl.larva_density_to)::double precision + COALESCE(fl.larva_density_to, fl.larva_density)::double precision / 2::double precision < 5 group by region_id) t2 on cr.id=t2.region_id\n"
+" left join (SELECT region_id,sum(1) as quietly from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and COALESCE(fl.larva_density, fl.larva_density_to)::double precision + COALESCE(fl.larva_density_to, fl.larva_density)::double precision / 2::double precision <= 2 group by region_id) t3 on cr.id=t3.region_id\n"
+"where\n"
+" cr.del=false\n"
+" and (t1.danger is not null or t2.attention is not null or t3.quietly is not null)\n"
+" and cr.country_id="+country_id;
st = m_conn.createStatement();
rs=null;
try {
rs = st.executeQuery(sql);
} catch( SQLException ex ) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
html+="<h3>"+trt("Hopper_density")+"</h3>";
html+=trt("From_date")+": "+sdf.format(new Date(Long.parseLong(start_t)*1000));
html+="<br>"+trt("To_date")+": "+sdf.format(new Date(Long.parseLong(end_t)*1000));
html+="<table border=\"1\" style=\"border-collapse: collapse;\">";
html+="<tr style=\"background-color:#dadada;\"><th>"+trt("Oblast")+"</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_r.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Dangerous")+"\"<br>("+trt("Hopper_density")+" >=5)</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_y.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Attention")+"\"<br>("+trt("Hopper_density")+" >=3 "+trt("and")+" <5)</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_g.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Quietly")+"\"<br>("+trt("Hopper_density")+" <=2)</th></tr>";
exists=false;
if(rs!=null)
{
while (rs.next())
{
html+="<tr>";
html+="<td>"+rs.getString("region_name")+"</td>";
html+="<td>"+rs.getString("danger")+"</td>";
html+="<td>"+rs.getString("attention")+"</td>";
html+="<td>"+rs.getString("quietly")+"</td>";
html+="</tr>";
exists=true;
}
}
st.close();
if(!exists) html+="<td colspan=\"5\" style=\"text-align:center;font-weight:bold;\">"+trt("No_data")+"</td>";
html+="</table>";
html+="<a target=\"_blank\" href=\"http://ccalm.org/engine/?&cmd=FrmLocust&country_id="+country_id+"&date_start="+sdf.format(new Date(Long.parseLong(start_t)*1000))+"&date_end="+sdf.format(new Date(Long.parseLong(end_t)*1000))+"&registered=1&indicator=2\">"+trt("Open_data_on_the_map")+"</a>";
html+="<br><br>";
sql=""
+" select cr.name region_name,coalesce(t1.danger,0) danger,coalesce(t3.quietly,0) quietly from\n"
+" main.countriesregions cr\n"
+" left join (SELECT region_id,sum(1) as danger from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and (kuliguli_size >= 1 or kuliguli_density>=1 or kuliguli_density_to>=1) group by region_id) t1 on cr.id=t1.region_id\n"
+" left join (SELECT region_id,sum(1) as quietly from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and (kuliguli_size < 1 or kuliguli_size is null) group by region_id) t3 on cr.id=t3.region_id\n"
+" where\n"
+" cr.del=false\n"
+" and (t1.danger is not null or t3.quietly is not null)\n"
+" and cr.country_id="+country_id;
st = m_conn.createStatement();
rs=null;
try {
rs = st.executeQuery(sql);
} catch( SQLException ex ) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
html+="<h3>"+trt("Number_of_bands")+"</h3>";
html+=trt("From_date")+": "+sdf.format(new Date(Long.parseLong(start_t)*1000));
html+="<br>"+trt("To_date")+": "+sdf.format(new Date(Long.parseLong(end_t)*1000));
html+="<table border=\"1\" style=\"border-collapse: collapse;\">";
html+="<tr style=\"background-color:#dadada;\"><th>"+trt("Oblast")+"</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_r.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Dangerous")+"\"<br>("+trt("Number_of_bands")+" >=1)</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_g.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Quietly")+"\"<br>("+trt("Number_of_bands")+" <1)</th></tr>";
exists=false;
if(rs!=null)
{
while (rs.next())
{
html+="<tr>";
html+="<td>"+rs.getString("region_name")+"</td>";
html+="<td>"+rs.getString("danger")+"</td>";
html+="<td>"+rs.getString("quietly")+"</td>";
html+="</tr>";
exists=true;
}
}
st.close();
if(!exists) html+="<td colspan=\"3\" style=\"text-align:center;font-weight:bold;\">"+trt("No_data")+"</td>";
html+="</table>";
html+="<a target=\"_blank\" href=\"http://ccalm.org/engine/?&cmd=FrmLocust&country_id="+country_id+"&date_start="+sdf.format(new Date(Long.parseLong(start_t)*1000))+"&date_end="+sdf.format(new Date(Long.parseLong(end_t)*1000))+"&registered=1&indicator=3\">"+trt("Open_data_on_the_map")+"</a>";
html+="<br><br>";
sql=""
+" select cr.name region_name,coalesce(t1.danger,0) danger,coalesce(t3.quietly,0) quietly from\n"
+" main.countriesregions cr\n"
+" left join (SELECT region_id,sum(1) as danger from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and (swarm_maturity is not null or swarm_density_id is not null) group by region_id) t1 on cr.id=t1.region_id\n"
+" left join (SELECT region_id,sum(1) as quietly from main.frmlocust fl join main.terminals t on t.serial=fl.device_id where fl.del=false and t.del=false and (fl.date>to_timestamp("+start_t+") and fl.date<to_timestamp("+end_t+")) and (swarm_maturity is null and swarm_density_id is null) group by region_id) t3 on cr.id=t3.region_id\n"
+" where\n"
+" cr.del=false\n"
+" and (t1.danger is not null or t3.quietly is not null)\n"
+" and cr.country_id="+country_id;
st = m_conn.createStatement();
rs=null;
try {
rs = st.executeQuery(sql);
} catch( SQLException ex ) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
html+="<h3>"+trt("Number_of_swarms")+"</h3>";
html+=trt("From_date")+": "+sdf.format(new Date(Long.parseLong(start_t)*1000));
html+="<br>"+trt("To_date")+": "+sdf.format(new Date(Long.parseLong(end_t)*1000));
html+="<table border=\"1\" style=\"border-collapse: collapse;\">";
html+="<tr style=\"background-color:#dadada;\"><th>"+trt("Oblast")+"</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_r.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Dangerous")+"\"<br>("+trt("Number_of_swarms")+" >=1)</th><th><img src=\"http://ccalm.org/resources/engine/images/icons/marker_g.png\" alt=\"\" align=\"left\">"+trt("Number_forms")+" \""+trt("Quietly")+"\"<br>("+trt("Number_of_swarms")+" <1)</th></tr>";
exists=false;
if(rs!=null)
{
while (rs.next())
{
html+="<tr>";
html+="<td>"+rs.getString("region_name")+"</td>";
html+="<td>"+rs.getString("danger")+"</td>";
html+="<td>"+rs.getString("quietly")+"</td>";
html+="</tr>";
exists=true;
}
}
st.close();
if(!exists) html+="<td colspan=\"5\" style=\"text-align:center;font-weight:bold;\">"+trt("No_data")+"</td>";
html+="</table>";
html+="<a target=\"_blank\" href=\"http://ccalm.org/engine/?&cmd=FrmLocust&country_id="+country_id+"&date_start="+sdf.format(new Date(Long.parseLong(start_t)*1000))+"&date_end="+sdf.format(new Date(Long.parseLong(end_t)*1000))+"&registered=1&indicator=5\">"+trt("Open_data_on_the_map")+"</a>";
html+="<br><br>";
html+="</body></html>";
/*String mail_host="";
String mail_port="";
String mail_login="";
String mail_password="";*/
try {
EmailUtility.sendEmail(mail_host, mail_port, mail_login, mail_password, email, "Locust statistics", html);
//result = "The e-mail was sent successfully";
} catch (Exception ex) {
ex.printStackTrace();
//result = "There were an error: " + ex.getMessage();
} finally {
//request.setAttribute("Message", resultMessage);
//getServletContext().getRequestDispatcher("/Result.jsp").forward(request, response);
}
html="";
}
} catch (NumberFormatException ex) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
} catch (SQLException ex) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
}
return result;
}
//---------------------------------------------------------------------------
@Override
public void setServletContext(ServletContext servletContext) {
this.context=servletContext;
}
//---------------------------------------------------------------------------
public String trt(String key)
{
String result="";
if(m_conn!=null) {
ResultSet rs=null;
Statement st = null;
try {
st = m_conn.createStatement();
String sql = "select case when '"+m_user.language_id+"'='666' then translation||'''\"' else translation end as translation from main._translations t where t.identifier='"+key+"' and (t.language_id='"+m_user.language_id+"' or ('"+m_user.language_id+"'='666' and t.language_id=1));";
rs = st.executeQuery(sql);
if(rs != null) {
if (rs.next()) {
result = rs.getString(1);
}
}
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}finally{
if(st!=null) try{st.close();}catch(SQLException ex) {}
if(rs!=null) try{rs.close();}catch(SQLException ex) {}
}
}
if(result.equals(""))
{
result = key.replaceAll("_", " ");
}
return result;
}
//---------------------------------------------------------------------------
//Translate text by patterns
public String getText(String text) {
int pos1 = 0;
while (true) {
pos1 = text.indexOf("trt('", pos1);
if (pos1 == -1)
break;
int pos2 = text.indexOf("')", pos1);
if (pos2 == -1)
break;
text = text.substring(0, pos1) + trt(text.substring(pos1 + 5, pos2)) + text.substring(pos2 + 2);
}
return text;
}
//---------------------------------------------------------------------------
}

View File

@ -0,0 +1,47 @@
package kz.locust.CCALM;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import tools.User;
@Controller
@SessionAttributes( { "user" })
public class Session {
//If not created object "user", create him.
@ModelAttribute("user")
public User populatePerson() {
return new User("none");
}
@RequestMapping(value = "/session", method = {RequestMethod.GET, RequestMethod.POST })
@ResponseBody
public Object ajaxTest(@ModelAttribute User user,HttpServletResponse response) {
response.setHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
JSONObject obj = new JSONObject();
if(user.id==null || user.id.equals("") || user.id.equals("null"))
obj.put("result", "ERROR");
else {
obj.put("result", "OK");
obj.put("user_id", user.id);
}
return obj.toString();
}
/*class Result
{
public String result;
Result(String result){this.result=result;}
}*/
}

View File

@ -0,0 +1,202 @@
package kz.locust.CCALM;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.HttpEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
@Controller
public class TestFiles implements ServletContextAware {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SendMail.class);
private ServletContext context;
@RequestMapping(value = "/TestFiles",method = RequestMethod.GET,produces = "text/html;charset=UTF-8")
@ResponseBody
public Object ajaxTamer()
{
String result="";
//Load DB configuration from "config.xml"
String db_url = "";
String db_login = "";
String db_password = "";
String mail_host = "";
String mail_port = "";
String mail_login = "";
String mail_password = "";
//String data_dir = "";
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain = doc.getDocumentElement();
NodeList nl = nMain.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getNodeName().equals("db-url"))
db_url = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-login"))
db_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("db-password"))
db_password = nl.item(i).getTextContent();
//if (nl.item(i).getNodeName().equals("data-dir"))
// data_dir = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("mail-host"))
mail_host = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("mail-port"))
mail_port = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("mail-login"))
mail_login = nl.item(i).getTextContent();
if (nl.item(i).getNodeName().equals("mail-password"))
mail_password = nl.item(i).getTextContent();
}
} catch (Exception ex) {
logger.info(ex.getMessage());
}
//Connect to database
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
logger.info("Connect is OK!");
result+="Connect is OK!<br>";
}else
{
logger.info("<br>Connect is ERROR<br>");
result+="Connect is ERROR!<br>";
}
}catch(Exception e)
{
logger.info("<br>Connect Exception:"+e.getMessage()+"<br>");
result+="Connect Exception:"+e.getMessage()+"<br>";
}
String sql;
Statement st;
ResultSet rs=null;
result+="image_name1<br><br>";
sql="select image_name1 as name from main.frmlocustdel where image_name1 is not null";
try {
st = conn.createStatement();
rs=null;
try {
rs = st.executeQuery(sql);
} catch( SQLException ex ) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
if(rs!=null)
{
while (rs.next())
{
if(!(new File("/temp/CCALM/data/frmlocustdel/"+rs.getString("name"))).exists())
{
logger.info("update main.frmlocustdel set image_name1=null where image_name1=\""+rs.getString("name")+"\"");
result+="update main.frmlocustdel set image_name1=null where image_name1='"+rs.getString("name")+"';"+"<br>";
}
}
}
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
result+="image_name2<br><br>";
sql="select image_name2 as name from main.frmlocustdel where image_name2 is not null";
try {
st = conn.createStatement();
rs=null;
try {
rs = st.executeQuery(sql);
} catch( SQLException ex ) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
if(rs!=null)
{
while (rs.next())
{
if(!(new File("/temp/CCALM/data/frmlocustdel/"+rs.getString("name"))).exists())
{
logger.info("update main.frmlocustdel set image_name2=null where image_name2=\""+rs.getString("name")+"\"");
result+="update main.frmlocustdel set image_name2=null where image_name2='"+rs.getString("name")+"';"+"<br>";
}
}
}
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
result+="image_name3<br><br>";
sql="select image_name3 as name from main.frmlocustdel where image_name3 is not null";
try {
st = conn.createStatement();
rs=null;
try {
rs = st.executeQuery(sql);
} catch( SQLException ex ) {
result+="<br>Exec Exception:"+ex.getMessage()+"<br>";
}
if(rs!=null)
{
while (rs.next())
{
if(!(new File("/temp/CCALM/data/frmlocustdel/"+rs.getString("name"))).exists())
{
logger.info("update main.frmlocustdel set image_name3=null where image_name3=\""+rs.getString("name")+"\"");
result+="update main.frmlocustdel set image_name3=null where image_name3='"+rs.getString("name")+"';"+"<br>";
}
}
}
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
//---------------------------------------------------------------------------
@Override
public void setServletContext(ServletContext servletContext) {
this.context=servletContext;
}
}

View File

@ -0,0 +1,204 @@
package kz.locust.CCALM;
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.Set;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.servlet.ServletContext;
import javax.xml.parsers.DocumentBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import tools.User;
/**
* Handles requests for the application home page.
*/
@Controller
@SessionAttributes( { "user" })
public class Translation implements ServletContextAware {
private static final Logger logger = LoggerFactory.getLogger(Translation.class);
private ServletContext context;
//If not created object "user", create him.
@ModelAttribute("user")
public User populatePerson() {
return new User("none");
}
/*public static boolean loadTranslationFromXML(Properties props, InputStream isXML)
{
boolean result=false;
if(isXML!=null)
{
Document doc = null;
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
doc = dBuilder.parse(isXML);
} catch (Exception ex) {
logger.info(ex.getMessage());
}
Node reqNode = doc.getDocumentElement();
Node nextnode=reqNode.getFirstChild();
while(nextnode!=null)
{
if(nextnode.getNodeName().equals("string"))
{
String name=nextnode.getAttributes().getNamedItem("name").getNodeValue();
String val="";
if(nextnode.getFirstChild()!=null)
val=nextnode.getFirstChild().getNodeValue();
//if(props.getProperty(name,"").equals("") && !val.equals(""))
props.setProperty(name, val);
result=true;
}
nextnode = nextnode.getNextSibling();
}
}
return result;
}*/
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/translation", method = RequestMethod.GET)
public String home(@ModelAttribute User user/*, Locale locale*/, Model model) {
Properties props = new Properties();
String db_url="";
String db_login="";
String db_password="";
//Load DB configuration from "config.xml"
try {
//String fullPath = context.getRealPath("/WEB-INF/config.xml");
//File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
e.printStackTrace();
}
//Get language from database
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
System.out.println("Connect is OK!");
}else
{
System.out.println("<br>Connect is ERROR<br>");
}
}catch(Exception e)
{
System.out.println("<br>Connect Exception:"+e.getMessage()+"<br>");
}
try {
Statement st = conn.createStatement();
ResultSet rs=null;
try {
String sql_query = "select identifier,case when '"+user.language_id+"'='666' then translation||'''\"' else translation end as translation from main._translations t where t.del=false and (t.language_id='"+user.language_id+"' or ('"+user.language_id+"'='666' and t.language_id=1)) and translation_type_id=1 order by identifier;";
rs = st.executeQuery(sql_query);
} catch( SQLException ex )
{
System.out.println("<br>SQLException:"+ex.getMessage()+"<br>");
}
if(rs!=null)
{
while (rs.next())
{
if(rs.getString("translation")!=null)
props.setProperty(rs.getString("identifier"), rs.getString("translation"));
}
}
st.close();
} catch( SQLException ex )
{
System.out.println("<br>SQLException:"+ex.getMessage()+"<br>");
}
try{ conn.close(); }catch(Exception e){}
//Create JavaScript text
/*
InputStream utf8in = getClass().getClassLoader().getResourceAsStream("messages_"+user.lng+".properties");
Reader reader;
try {
reader = new InputStreamReader(utf8in, "UTF-8");
props.load(reader);
} catch (UnsupportedEncodingException e) {
}catch (IOException e) {
}*/
//Переписываю в JavaScript код
String result="";
Set<Object> keys = props.keySet();
for(Object k:keys){
String key = ((String)k).trim();
String val = props.getProperty(key,"");
if(val.equals(""))
{
val = val.replaceAll("_", " ");
}
val = val.replaceAll("'", "`");
result += " ,"+key+":'"+val+"'\n";
}
model.addAttribute("keys",result);
return "translation";
}
@Override
public void setServletContext(ServletContext servletContext) {
this.context=servletContext;
}
}

View File

@ -0,0 +1,128 @@
package kz.locust.CCALM;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
*
* @author ivanov.i
*/
public class WeatherDownload {
private static final int BUFFER_SIZE = 4096;
public boolean download(String strURL,String strFile,String posStart,String posEnd)
{
boolean result=true;
String rez = null;
String inputLine = null;
/*try
{
rez = new String("".getBytes(), "utf-8");
inputLine = new String("".getBytes(), "utf-8");
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}*/
try
{
URL url = new URL(strURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Range","bytes=" + posStart + "-" + posEnd);
conn.connect();
int responseCode = conn.getResponseCode();
if (responseCode / 100 == 2) //Code 206 is "Partial Content"
{
InputStream inputStream = conn.getInputStream();
FileOutputStream outputStream = new FileOutputStream(strFile);
int bytesRead;
byte[] buffer = new byte[BUFFER_SIZE];
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
}
conn.disconnect();
}
catch (IOException e)
{
//e.printStackTrace();
result=false;
}
return result;
}
/**
* Downloads a file from a URL
* @param fileURL HTTP URL of the file to be downloaded
* @param saveDir path of the directory to save the file
* @throws IOException
*/
public static void downloadFile(String fileURL, String saveDir)
throws IOException {
URL url = new URL(fileURL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
int responseCode = httpConn.getResponseCode();
// always check HTTP response code first
if (responseCode == HttpURLConnection.HTTP_OK) {
String fileName = "";
String disposition = httpConn.getHeaderField("Content-Disposition");
String contentType = httpConn.getContentType();
int contentLength = httpConn.getContentLength();
if (disposition != null) {
// extracts file name from header field
int index = disposition.indexOf("filename=");
if (index > 0) {
fileName = disposition.substring(index + 10,
disposition.length() - 1);
}
} else {
// extracts file name from URL
fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1,
fileURL.length());
}
System.out.println("Content-Type = " + contentType);
System.out.println("Content-Disposition = " + disposition);
System.out.println("Content-Length = " + contentLength);
System.out.println("fileName = " + fileName);
// opens input stream from the HTTP connection
InputStream inputStream = httpConn.getInputStream();
String saveFilePath = saveDir + File.separator + fileName;
// opens an output stream to save into file
FileOutputStream outputStream = new FileOutputStream(saveFilePath);
int bytesRead = -1;
byte[] buffer = new byte[BUFFER_SIZE];
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
System.out.println("File downloaded");
} else {
System.out.println("No file to download. Server replied HTTP code: " + responseCode);
}
httpConn.disconnect();
}
}

View File

@ -0,0 +1,544 @@
package kz.locust.CCALM.engine;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.ServletContextAware;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import tools.User;
/**
* Handles requests for the application home page.
*/
@Controller
@SessionAttributes( { "user" })
public class EngineController implements ServletContextAware {
private static final Logger logger = LoggerFactory.getLogger(EngineController.class);
private ServletContext context;
private Properties m_props=null;
//private String m_props_loc="";
//If not created object "user", create him.
@ModelAttribute("user")
public User populatePerson() {
return new User("none");
}
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/engine", method = RequestMethod.GET)
public String home(@ModelAttribute User user, Model model,@RequestParam(required=false,name="lng") String language_id) {
if(language_id!=null && !language_id.equals("")) user.language_id=language_id;
logger.info("user.id="+user.id+" user.name="+user.name+" user.language_id="+user.language_id);
String db_url="";
String db_login="";
String db_password="";
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(fXmlFile);
Document doc = dBuilder.parse(new ClassPathResource("config.xml").getInputStream());
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
e.printStackTrace();
}
//Get language from database
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
System.out.println("Connect is OK!");
}else
{
System.out.println("<br>Connect is ERROR<br>");
}
}catch(Exception e)
{
System.out.println("<br>Connect Exception:"+e.getMessage()+"<br>");
}
try {
Statement st = conn.createStatement();
ResultSet rs=null;
if(user.id!=null){
if(language_id!=null && !language_id.equals(""))
{
//Set the language for the current user if it is transferred.
user.language_id=language_id;
try {
st.execute("update main._users set language_id='"+user.language_id+"' where id="+user.id);
} catch( SQLException ex )
{
System.out.println("<br>SQLException:"+ex.getMessage()+"<br>");
}
}
//Select language for current user
try {
String sql="select language_id,country_id from main._users where id="+String.valueOf(user.id)+";";
rs = st.executeQuery(sql);
} catch( SQLException ex )
{
System.out.println("<br>SQLException:"+ex.getMessage()+"<br>");
}
if(rs!=null)
{
while (rs.next())
{
user.language_id = rs.getString("language_id");
user.country_id = rs.getString("country_id");
}
}
}
st.close();
} catch( SQLException ex )
{
System.out.println("<br>SQLException:"+ex.getMessage()+"<br>");
}
//Send user name and role
model.addAttribute("uName",user.name+" ("+user.role+")");
model.addAttribute("m_locale",user.language_id);
model.addAttribute("country_id",user.country_id);
//Send translation to user
/*InputStream utf8in = getClass().getClassLoader().getResourceAsStream("messages_"+user.lng+".properties");
if(utf8in!=null)
{
Properties props=new Properties();
Reader reader;
try {
reader = new InputStreamReader(utf8in, "UTF-8");
props.load(reader);
} catch (UnsupportedEncodingException e) {
}catch (IOException e) {
}
//Также подгружаю перевод из XML файла Android проекта
Translation.loadTranslationFromXML(props,getClass().getClassLoader().getResourceAsStream("strings_"+user.lng+".xml"));
Set<Object> keys = props.keySet();
for(Object k:keys){
String key = (String)k;
String val="";
//val = trt(conn,key,user); //Если есть то перевод беру из базы данных
if(val.equals(""))
{
val = props.getProperty(key,"");
if(val.equals(""))
{
val = val.replaceAll("_", " ");
}
}
model.addAttribute(key,val);
}
}*/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//TODO удалить нужно только для копирования языков в базу (если там их нет)
/*InputStream isXML = getClass().getClassLoader().getResourceAsStream("strings_"+user.lng+".xml");
if(isXML!=null)
{
Document doc = null;
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
doc = dBuilder.parse(isXML);
} catch (Exception ex) {
logger.info(ex.getMessage());
}
Node reqNode = doc.getDocumentElement();
Node nextnode=reqNode.getFirstChild();
while(nextnode!=null)
{
if(nextnode.getNodeName().equals("string"))
{
String name=nextnode.getAttributes().getNamedItem("name").getNodeValue();
String val="";
if(nextnode.getFirstChild()!=null)
val=nextnode.getFirstChild().getNodeValue();
//Если нет то добавляю
boolean exists=false;
try {
Statement st = conn.createStatement();
ResultSet rs=null;
try {
String sql="select t.id from main._translations t join main._languages l on l.id=t.language_id where t.del=false and identifier='"+name+"' and l.short_name='"+user.lng+"';";
rs = st.executeQuery(sql);
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
if(rs!=null)
{
while (rs.next())
{
exists=true;
}
}
st.close();
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
if(exists)
{
logger.info(name+" = "+val+" exists");
//Если идентификатор сушествует то проверяю совпадает ли сам перевод (просто для информации)
boolean equals=false;
try {
Statement st = conn.createStatement();
ResultSet rs=null;
try {
String sql="select t.id from main._translations t join main._languages l on l.id=t.language_id where t.del=false and t.identifier='"+name+"' and t.translation='"+val+"' and l.short_name='"+user.lng+"';";
rs = st.executeQuery(sql);
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
if(rs!=null)
{
while (rs.next())
{
equals=true;
}
}
st.close();
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
if(equals)
{
logger.info(name+" = "+val+" equals");
}else
{
logger.info(name+" = "+val+" not equals");
}
}else
{
logger.info(name+" = "+val+" not exists");
//Вставляю новую запись в базу
try {
Statement st = conn.createStatement();
try {
String sql="insert into main._translations(language_id,identifier,translation,translation_type_id) select (select l.id from main._languages l where l.del=false and l.short_name='"+user.lng+"'),'"+name+"' as identifier,'"+val+"' as translation,3 as translation_type_id;";
st.execute(sql);
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
}
}
nextnode = nextnode.getNextSibling();
}
}*/
//Читаю перевод из properties файлов и записываю в базу под номером 1
/*InputStream utf8in = getClass().getClassLoader().getResourceAsStream("messages_"+user.lng+".properties");
if(utf8in!=null)
{
Properties props=new Properties();
Reader reader;
try {
reader = new InputStreamReader(utf8in, "UTF-8");
props.load(reader);
} catch (UnsupportedEncodingException e) {
}catch (IOException e) {
}
//Также подгружаю перевод из XML файла Android проекта
//Translation.loadTranslationFromXML(props,getClass().getClassLoader().getResourceAsStream("strings_"+user.lng+".xml"));
Set<Object> keys = props.keySet();
for(Object k:keys){
String key = (String)k;
String val = props.getProperty(key,"");
//Если нет то добавляю
boolean exists=false;
try {
Statement st = conn.createStatement();
ResultSet rs=null;
try {
String sql="select t.id from main._translations t join main._languages l on l.id=t.language_id where t.del=false and identifier='"+key+"' and l.short_name='"+user.lng+"' and translation_type_id=1;";
rs = st.executeQuery(sql);
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
if(rs!=null)
{
while (rs.next())
{
exists=true;
}
}
st.close();
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
if(exists)
{
logger.info(key+" = "+val+" exists");
}else
{
logger.info(key+" = "+val+" not exists");
//Вставляю новую запись в базу
try {
Statement st = conn.createStatement();
try {
String sql="insert into main._translations(language_id,identifier,translation,translation_type_id) select (select l.id from main._languages l where l.del=false and l.short_name='"+user.lng+"'),'"+key+"' as identifier,'"+val+"' as translation,1 as translation_type_id;";
st.execute(sql);
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
} catch( SQLException ex )
{
logger.info(ex.getMessage());
}
}
}
}*/
//Для перевода выбираю всё что под номером 1 в переводе
try {
m_props = new Properties();
Statement stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String sql_query = "select identifier,case when '"+user.language_id+"'='666' then translation||'''\"' else translation end as translation from main._translations t where t.del=false and (t.language_id='"+user.language_id+"' or ('"+user.language_id+"'='666' and t.language_id=1)) and translation_type_id=1;";
ResultSet rs = stt.executeQuery(sql_query);
if (rs != null) {
while (rs.next())
{
String identifier = rs.getString("identifier");
String translation = rs.getString("translation");
m_props.setProperty(identifier, translation);
}
rs.close();
}
stt.close();
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
Set<Object> keys = m_props.keySet();
for(Object k:keys){
String key = (String)k;
String val="";
if(val.equals(""))
{
val = m_props.getProperty(key,"");
if(val.equals(""))
{
val = val.replaceAll("_", " ");
}
}
model.addAttribute(key,val);
}
//Подложка Substrate_head Substrate_tail
String Substrate_head="";
String Substrate_tail="";
if(!user.country_id.equals(""))
{
try {
Statement st = conn.createStatement();
ResultSet rs=null;
try {
String sql="SELECT id,path,description,projection FROM main.layouts where del=false and country_id="+user.country_id+" order by description";
rs = st.executeQuery(sql);
} catch( SQLException ex )
{
}
if(rs!=null)
{
while (rs.next())
{
Substrate_head+=" <option value=\""+rs.getString("id")+"\">"+rs.getString("description")+"</option>\n";
Substrate_tail+="g_Layouts[\""+rs.getString("id")+"\"] = new ol.source.XYZ({\n";
Substrate_tail+=" url: '"+rs.getString("path")+"',\n";
if(rs.getString("projection")!=null && rs.getString("projection").indexOf("EPSG:")!=-1)
Substrate_tail+=" projection: '"+rs.getString("projection")+"',\n";
Substrate_tail+=" });\n";
}
}
st.close();
} catch( SQLException ex )
{
}
}
model.addAttribute("Substrate_head",Substrate_head);
model.addAttribute("Substrate_tail",Substrate_tail);
//Выбираю дату получения NDVI данных по номеру дня
/*{
int maxNum=1;
try {
File folder = new File(ndvi_dir);
File[] listOfFiles = folder.listFiles();
if(listOfFiles!=null)
{
for (int i = 0; i < listOfFiles.length; i++)
{ if (listOfFiles[i].isFile())
{
if(Tools.afterLast(listOfFiles[i].getName(),".").equals("json"))
{
int num=1;
try {
num=1+Integer.valueOf(Tools.beforeLast(listOfFiles[i].getName(),"."));
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
if(num>maxNum) maxNum=num;
}
}
}
}
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
Year y = Year.of( Calendar.getInstance().get(Calendar.YEAR) ) ;
model.addAttribute("NDVI_DATE",y.atDay( maxNum ).toString());
model.addAttribute("NDVI_DAY",String.valueOf(maxNum));
}*/
//Выбираю дату получения NDWI данных по номеру дня
/*{
int maxNum=1;
try {
File folder = new File(ndwi_dir);
File[] listOfFiles = folder.listFiles();
if(listOfFiles!=null)
{
for (int i = 0; i < listOfFiles.length; i++)
{ if (listOfFiles[i].isFile())
{
if(Tools.afterLast(listOfFiles[i].getName(),".").equals("json"))
{
int num=1;
try {
num=1+Integer.valueOf(Tools.beforeLast(listOfFiles[i].getName(),"."));
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
if(num>maxNum) maxNum=num;
}
}
}
}
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
Year y = Year.of( Calendar.getInstance().get(Calendar.YEAR) ) ;
model.addAttribute("NDWI_DATE",y.atDay( maxNum ).toString());
model.addAttribute("NDWI_DAY",String.valueOf(maxNum));
}*/
try{ conn.close(); }catch(Exception e){}
return "engine/index";
}
@Override
public void setServletContext(ServletContext context){
this.context=context;
}
//Перевести слово по идентификатору из базы а если в базе нет то из файлов перевода
public String trt(Connection conn,String key,User user)
{
String result="";
if(key.equals(""))
return result;
try {
Statement stt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
String sql_query = "select case when '"+user.language_id+"'='666' then translation||'''\"' else translation end as translation from main._translations t where t.del=false and identifier='"+key+"' and (t.language_id='"+user.language_id+"' or ('"+user.language_id+"'='666' and t.language_id=1));";
ResultSet rs = stt.executeQuery(sql_query);
if (rs != null) {
try {
if (rs.next())
result=rs.getString(1);
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
rs.close();
}
stt.close();
} catch (SQLException ex) {
logger.info(ex.getMessage());
}
if(result.equals(""))
{
result = key.replaceAll("_", " ");
}
return result;
}
}

View File

@ -0,0 +1,21 @@
package kz.locust.CCALM.recReq;
import java.io.Serializable;
public class RecReq implements Serializable {
private static final long serialVersionUID = 1L;
public int fn;
public int cmd;
public int getFn()
{
return fn;
}
public int getCmd()
{
return cmd;
}
}

View File

@ -0,0 +1,535 @@
language = en
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Language = Language
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,534 @@
language = en
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,535 @@
language = en
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,535 @@
language = en
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,535 @@
language = en
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,534 @@
language = ps
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,540 @@
language = ru
Language = Язык
label_registration = Регистрация
label_login = Войти на сайт
From_DPA = С планшета
Days = Дней
Hours = Часов
Company_User = Компания -> Пользователь
Object_Geofence = Объект > Геозона
Sensor_for_ComboBox = Датчик для выпадающего списка
The_boundary_values_of_the_sensors = Граничные значения датчиков.
CountriesRegions = Границы регионов
Types_of_locust = Виды саранчи
Help = Помощь
Unknown_function = Неизвестная функция!
Not_yet_implemented = Пока не реализовано!
Layout = Слой
Company = Компания
Path = Путь
Description = Описание
Layouts = Слои
Type_of_locust = Вид саранчи
Kind_of_locust = Вид саранчи
Sorting_index = Индекс сортировки
Name = Имя
Types_of_locust = Вид саранчи
Markings = Маркировка
Formulation = Препаративная форма
Vegetation = Растительность
Fledgling = Окрыление
Age = Возраст
Biotop = Биотоп
Capacity = Ёмкость
Capacities = Ёмкости
Borns = Отрождение
Сontainers = Контейнеры
Breeding = Поведение
Containers = Контейнеры
Types_of_operators = Типы операторов
Types_of_operator = Тип оператора
Density_of_vegetation = Густота растительного покрова
Height = Высота
Damage = Повреждения
Density = Плотность
Directions = Направления
Angle = Угол
Methods_of_calculating_mortality = Методы подсчёта смертности
Method_of_calculating_mortality = Метод подсчёта смертности
Phase = Фаза
Condition_of_vegetation = Состояние растительности
Actions_of_bands = Действия кулиги
Behaviors = Поведение
Paintings = Окраска
Painting = Окрас
Enemies = Наличие естественных врагов
Report_by_tablets = Отчёт по планшетам
Country = Страна
From_date = С даты
To_date = По дату
The_tabblet = Планшет
Forms_for_locust_survey = Формы обследования саранчи
Forms_for_spray_monitoring = Формы мониторинга противосаранчовых обработок
Completed_forms_by_tablets = Заполнение форм по планшетам
Filling_forms_by_countries = Заполнение форм по странам
Method_filling_form = Способ заполнения формы
The_tablet_registered = Планшет зарегистрирован
IDENTIFICATION_OF_THE_PLACE = ИДЕНТИФИКАЦИЯ МЕСТА
Region = Область
Regions = Области
Rayon = Район
Rual_district = Сельский округ
Name_of_the_village = Поселок
Farm_or_site = Хозяйство или местность
Name_of_survey_team_leader = Имя лидера команды обследования
Date = Дата
Latitude_of_point = Широта точки
Longitude_of_point = Долгота точки
Surveyed_area_ha = Обследованная площадь(га)
ECOLOGICAL_INFORMATION = ЭКОЛОГИЧЕСКАЯ ИНФОРМАЦИЯ
Type_of_biotope = Тип биотопа
Vegetation_cover = Густота растительного покрова
Air_temperature = Погода: температура воздуха(ºC)
Wind_m_s = Погода: ветер(м/с)
bio_wind = Погода: ветер(м/с)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = ИНФОРМАЦИЯ О САРАНЧОВЫХ (В Т.Ч. КУБЫШКИ)
Present = Присутствуют саранчовые
Locust_species = Вид саранчи
Area_infested_ha = Заселённая площадь(га)
EGGS = ЯЙЦА
Egg_bed_surface_in_ha = Залежь кубышек (площадь га)
Egg_pods_density_m2 = Плотность кубышек (/м²)
Egg_pods_density = Плотность кубышек
Egg_pod = Кубышки
to = до
Eggs_average_number_egg_pod = Яйца (в среднем в кубышке)
Eggs_viable = Яйца(% жизнеспособных)
Natural_enemies_present = Естественны враги
HOPPERS_SCATTERED = ЛИЧИНКИ (РАЗРЕЖЕННЫЕ)
Hatching = Отрождение
Hopper_stages = Возраст личинок
Appearance = Фаза
Behaviour = Поведение
Hopper_density_m2 = Плотность личинок (/м²)
Hopper_density = Плотность личинок
Hopper_density_m2_to = Плотность личинок (/м²) до
HOPPER_BANDS = КУЛИГИ
Minimum_density_in_the_band_in_m2 = Плотность минимальная в кулиге (/м²)
Maximum_density_in_the_band_in_m2 = Плотность максимальная в кулиге (/м²)
Band_sizes_m2 = Размер кулиг (м²)
Number_of_bands = Количество кулиг
Behavior = Поведение
ADULTS = ИМАГО
Fledging = Окрыление
Maturity = Половозрелость
Adult_density_ha = Плотность имаго /га
Adult_density_m2 = Имаго (плотность/м²)
Adult_density = Плотность имаго
Feeding_and_roosting = Питание и размещение на растениях
Copulating = Спаривание
Laying = Яйцекладка
Flying = Полёты
SWARMS = СТАИ
Density_of_swarm = Плотность в стае
Swarm_size_ha = Размер стаи (га)
Number_of_swarms = Число стай
Flying_direction = Направление полёта
Flying_height = Высота полёта
COMMENTS = КОММЕНТАРИИ
Locust_Survey_Form = Форма обследования саранчи
Locust_Survey_Forms = Формы обследования саранчи
From_the_tablet = С планшета
From_WEB_interface = С WEB интерфейса
User = Пользователь
Weather_air_temperature_C = Погода: температура воздуха(ºC)
Weather = Погода
larva_behavior = Поведение
Spray_Monitoring_Form = Форма противосаранчовых обработок
Rural_district = Сельский округ
Name_of_control_team_leader = Имя лидера команды по обработке
Latitude_center_portion = Широта (центр участка)
Longitude_center_portion = Долгота (центр участка)
Area_treated_ha = Обработанная площадь(га)
VEGETATION_DATA = РАСТИТЕЛЬНОСТЬ
Kind = Вид
Type = Тип
type = тип
types = типы
Height_cm = Высота (см)
Crop_name = Наименование сельхозкультуры
Damage_area_ha = Площадь повреждения (га)
INSECTICIDE_DATA = ИНФОРМАЦИЯ ОБ ИНСЕКТИЦИДАХ
Trade_name = Коммерческое название
The_active_substance = Действующее вещество
Concentration_A_S = Концентрация (%)
Dose_rate_l_of_commercial_product_ha = Норма расхода (л коммерческого продукта/гa)
Rate_of_working_solution_l_ha = Расход рабочей жидкости (л/га)
Total_volume_of_working_solution_actually_applied_l = Общий объем использованной рабочей жидкости (л)
Number_of_spores_ml = Концентрация спор(/мл)
WEATHER_CONDITIONS = ПОГОДНЫЕ УСЛОВИЯ
Time_start = Время начала обработки
Time_end = Время окончания обработки
Temperature_start = Температура нач.(°C)
Temperature_end = Температура кон.(°C)
Relative_humidity_start = Отн. влажность воздуха нач.(%)
Relative_humidity_end = Отн. влажность воздуха кон.(%)
Wind_speed_start_m_s = Скорость ветра нач. (м/с)
Wind_speed_end_m_s = Скорость ветра кон. (м/с)
Wind_direction_start = Направление ветра нач.
Wind_direction_end = Направление ветра кон.
Spray_direction_start = Направление опрыскивания нач.
Spray_direction_end = Направление опрыскивания кон.
LOCUST_INFORMATION = ИНФОРМАЦИЯ О САРАНЧОВЫХ (В Т.Ч. КУБЫШКИ)
Imago = Имаго
Density_m2 = Плотность на м²
Bands = Кулиги
Swarms = Стаи
Scattered = Разреженные
SPRAY_APPLICATION = СВЕДЕНИЯ ПО ОПРЫСКИВАНИЮ
Spray_platform = Способ опрыскивания
Aerial = Авиа
Ground = Наземное
Person = Ручное
Spray_type = Вид опрыскивания
Spray_manufacturer = Марка опрыскивателя
Model_sprayer = Модель опрыскивателя
Atomizer_height_above_ground_m = Высота распылителя над поверхностью почвы (м)
Barriers = Барьеры
Barrier_width_m = Ширина барьера (м)
Spacing_of_barriers_m = Промежуток барьера (м)
spray_height = Высота над поверхностью почвы (м)
Forward_speed_km_h = Средняя скорость движения (км/ч)
Antenna_DGPS_used = Антенна: DGPS использовалась
Ground_marking = Наземная маркировка
CONTROL_EFFICACY = КОНТРОЛЬ ЭФФЕКТИВНОСТИ
Biological_efficiency_of_treatment = Биологическая эффективность обработки (%)
Time_after_treatment_hours = Прошло времени после обработки (часов)
Method_of_biological_efficiency_estimation = Метод подсчета биологической эффективности
SAFETY_AND_ENVIRONMENT = БЕЗОПАСНОСТЬ И ОКРУЖАЮЩАЯ СРЕДА
Protective_clothing = Индивидуальные средства защиты
Goggles = Очки
Masks = Маска
Gloves = Перчатки
Overalls = Комбинезон
Caps = Шапка
Boots = Сапоги
Absent = Отсутствуют
Protective_clothing_clean_and_in_good_state = Защитная одежда чистая и в хорошем состоянии?
Operator_accidentally_exposed_to_insecticide_or_feeling_unwell = Оператор случайно подвергся воздействию инсектицида или плохое самочувствие
Inform_abaut_spraying = Оповещенные об обработках
Farmer = Фермер
Shepherd = Пастух
Official = Должностное лицо
Beekeeper = Пчеловод
Villager = Сельский житель
Other = Другие
Empty_containers = Пустые контейнеры
Effect_on_non_terget_organism = Воздействие на нецелевые организмы
If_yes_describe_what_happened_description = Если да, опишите, что произошло
if_Yes_type_of_organisms_and_effects_description = Если Да, тип организмов и эффекты (описание)
If_Yes_type_of_incident_and_reported_by_whom_description = Если Да, тип инцидента и кем сообщен (описание)
Other_environmental_or_health_incident_reported_that_might_have_been_caused_by_the_treatment = Другие инциденты по здоровью или окружающей среде, возникшие при обработке
Comments = Коментарии
Spray_Monitoring_Forms = Формы противосаранчовых обработок
Information_on_the_distribution_of_locust = Информация о распространении и борьбе со стадными саранчовыми
Year = Год
year = год
Inspect_thous_ha = Обследовано (тыс. га)
Infested_thous_ha = Заселено (тыс. га)
Infested_over_ETD_thous_ha = Заселено выше ЭПВ (тыс. га)
Treated_thous_ha = Обработано (тыс. га)
The_tablet = Планшеты
Organization = Организация
Phone_number = Номер телефона
Responsible_person = Ответственное лицо за планшет (инспектор)
Serial_number = Серийный номер
The_tablet_model = Модель планшета
The_tablets = Планшеты
Phone = Телефон
Responsible_person = Ответственное лицо
Change_password = Сменить пароль
Login = Логин
Password = Пароль
New_password = Новый пароль
Repeat_password = Повторить пароль
User_settings = Пользовательские настройки
Named = Наименование
Value = Значение
Values = Значения
Object = Объект
sensor = сенсор
Groups_of_objects = Группы объектов
Object_of_observation = Объект наблюдения
Access = Доступ
Identifier = Идентификатор
Allow = Разрешить
Sensor = Сенсор
objects = объекты
Sensor_values = Показание датчика
Terminal = Терминал
Units_of_measurement = Единицы измерения
Fix_date = Дата фиксации
Messages = Сообщения
Read = Прочтённые
Readed = Прочтённые
Content = Содержание
Date_read = Дата чтения
Date_create = Дата создания
Day_mileage_and_speed = Дневной пробег и скорость
Kilometers_distance = Дистанция км.
Kilometers_distance_without_signal = Дистанция км. без сигнала
Company_site = Сайт компании
Contact_phone = Контактный телефон
Organizations = Организации
Site = Сайт
Users = Пользователи
Terminal_model = Модель терминала
Models_of_terminals = Модели терминалов
Sensor_type = Тип датчика
Sensor_of_devices = Датчик оборудования
Measurement = Измерение
Sensor_model = Модель датчика
Rounded_to = Округлять до
Sensors_models = Модели датчиков
Count_objects = Количество объектов
Group = Группа
Terminals = Терминалы
Stationary = Стационарный
Latitude = Широта
Longitude = Долгота
Icon = Иконка
Objects_of_observation = Объекты наблюдения
Count_of_sensors = Количество датчиков
Icons = Иконки
name = имя
File = Файл
Size = Размер
byte = байт
Geofence = Геозона
Geofences = Геозоны
Coordinate = Координаты
Coordinates_Geofence = Координаты геозоны
Position = Должность
True_position = Правильное положение
outside = снаружи
inside = внутри
Boundary = Граничное
Inform = Информировать
Inside = Внутри
Sensor_of_object = Датчик объекта
Sensors_of_objects = Датчики объектов
Last_value = Последнее значение
Date_of_the_last_value = Дата посл. знач.
Readings = Показание
Devices = Устройства
Sensor_readings = Показание датчика
GPS_readings = GPS показание
Fixation_date = Дата фиксации
Speed = Скорость
Message = Сообщение
Subject = Тема
Creation_date = Дата создания
Contents = Содержимое
User_messages = Сообщения пользователя
Reading_date = Дата прочтения
Users_messages = Сообщения пользователей
Minimum_value = Минимальное значение
Maximum_value = Максимальное значение
Only_on_the_boundary = Только на границе
Action = Действие
Rule = Правило
Actions = Действия
Access_role = Роль доступа
Parental_role = Родительская роль
Role_name = Наименование роли
Role_description = Описание роли
Role = Роль
Surname = Фамилия
Patronymic = Отчество
Phones = Телефоны
Password_expiration = Срок действия пароля
Renewal_password = Продление пароля
days = дней
day = день
S_N_P = Ф.И.О.
Last_enter = Посл. заход
Roles = Роли
User_roles = Пользовательские роли
Synchronization_objects = Объекты синхронизации
Synchronization_service = Сервис синхронизации
Synchronization_order = Порядок синхронизации
The_interval_between_the_update_in_s = Интервал между обн. в (сек)
At_a_time = Записей за раз
Time_of_the_last_synchronization = Времени с последней синхронизации
Service = Сервис
Order = Порядок
Interval = Интервал
Limit = Лимит
Synchronization_services = Сервисы синхронизации
Host = Хост
History = История
Table = Таблица
Field = Поле
Data = Данные
Short_name = Короткое имя
Translation = Перевод
Sprayer_type = Вид опрыскивателя
Sprayers = Опрыскиватели
Sprayer = Опрыскиватель
SprayersTypes = Вид опрыскивателя
Sprayer_type_name = Наименование опрыскивателя
Countries = Страны
Regions = Районы
Automated_system_of_data_collection = Автоматизированная система сбора данных
Download_android_app_Inspector = Скачать андроид приложение инспектора
Run_the_application_of_the_situational_center = Запустить приложение ситуационного центра
For_any_questions_contact_us_at_tel_Fax = По всем интересующим вопросам обращаться по тел./факс
You_are_not_logged_in = Вы не авторизованы!
Not_found_the_requested_node: = Не найден запрошенный узел:
The_number_of_records_is_not_equal_to_one = Количество записей не равно одному!
Filter_options = Параметры фильтра
Time_and_date_of_generation = Время и дата генерации
Creator = Создатель
E_mail_already_exists_in_the_database = Адрес электронной почты уже существует в базе данных!
Registration_form = Форма регистрации
You_have_successfully_registered = Вы успешно зарегистрировались!
Password_sent_to_your_e_mail = Пароль отправлен на ваш е-mail.
Operator_registration_form = Форма регистрации оператора
Security_Code = Защитный код
Update = Обновить
image = рисунок
Registering = Регистрация
Failed_to_send_your_password_to_the_e_mail = Не удалось отправить пароль на электронную почту.
Failed_to_update_the_password = Не удалось обновить пароль.
configuration_section_s = Раздел конфигурации; %s
configuration_option_s = опция конфигурации; %s
Locust_survey = Обследования саранчи
Spray_monitoring = Противосаранчовые обработки
Reports = Отчёты
Report = Отчёт
Map_layers = Слои карты
Administration = Администрирование
Standard_survey_forms = Стандартные формы обследования
Companies = Компании
Report_by_countries = Отчёт по странам
Lists = Справочники
Members = Пользователи
Photo = Фотография
Indicator = Показатель
PDA_registered = Планшеты зарегистрированы
From_PDA = С планшета
From_WEB_interface = С WEB интерфейса
Open_in_a_table_format = Открыть в табличном виде
Request_data = Запросить данные
Not = Нет
Yes = Да
Attention = Внимание
Quietly = Спокойно
Number_forms = Количество форм
Open_data_on_the_map = Открыть данные на карте
No_data = Данные отсутствуют
From_date = С даты
To_date = По дату
or = или
Dangerous = Опасно
Distribution_of_locust = Распространение и борьба со стадными саранчовыми
Hide = Скрыть
For_what_year = За какой год
Displayed_data = Отображаемые данные
Automated_system_of_data_collection_ASDC = Автоматизированная система сбора данных (ASDC)
Invalid_username_and_or_password = Неверный логин и/или пароль!
CIT_Italian_locust = CIT - итальянский прус
DMA_Moroccan_locust = DMA - мароккская саранча
LMI_Asian_migratory_locust = LMI - азиатская перелетная саранча
Substrate = Подложка
Change_login_password = Изменить логин/пароль
Displaying_data = Отображение данных
Show_data = Отобразить данные
All_types = Все виды
All_kinds = Все виды
Maps_of_areas_infested_above_Economic_Threshold_ET = Карты площадей, заселенных с плотностями выше экономического порога вредоносности (ЭПВ)
Maps_of_treated_areas_above_ET = Карты обработанных площадей выше ЭПВ
Map_of_the_level_of_threat = Карта уровня угрозы
Download_QGIS_project = Скачать QGIS проект
Danger = Опасно
Caution = Внимание
Calm = Спокойно
Increase = Подъём
Decrease = Спад
On_the_same_level = На том же уровне
Normal_Multiyear_average_level = Нормальный/Среднемноголетний уровень
Device_id = Идентификатор устройства
All_countries_of_CCA = Страны КЦА
The_Caucasus_countries_and_Russia = Страны Кавказа и Россия
Countries_of_Central_Asia_and_Russia = Станы Центральной Азии и Россия
from = от
The_forecast_of_hatching_periods = Прогноз инкубационного периода
Weather_forecast = Прогноз погоды
soil_temperature = температура почвы
Soil_temperature = Температура почвы
Passwords_did_not_match = Пароли не совпадают!
The_s_is_not_Email = Логин «%s» не электронная почта!
Password_changed_successfully = Пароль успешно изменен.
Failed_to_change_password = Не удалось изменить пароль.
Check_the_entered_data = Проверьте введенные данные.
for_ = для
Earth_temperature = Температура земли
Point = Точка
Forecast_of_hours = Часы прогноза
hours = часов
Change_login_password = Сменить логин/пароль
Type = Тип
Legend = Легенда
Spraying = Опрыскивание
Chart = График
Average = Среднее
Percent = Процент
For_s_year = За %s год
and = и
Time_and_date_of_generation = Дата создания
Filter_options = Параметры фильтра
Export_to_Excel = Экспорт в Excel
Preparing_of_report = Подготовка отчёта
Download_report = Скачать отчёт
Old_password = Старый пароль
Not_filled_Email_address = Не заполнен email
Wrong_XML_document = Неверный XML-документ
Please_enter_a_valid_email_address = Пожалуйста, введите правильный адрес электронной почты
For_new_users = Для новых пользователей
For_returning_users = Для вернувшихся пользователей
Phone = Телефон
Log_in = Авторизоваться
Registration = Регистрация
Authorization = Авторизация
Password_recovery = Восстановление пароля
The_s_field_is_empty = Не заполнено поле "%s"
New_user_is_registered = Новый пользователь зарегистрирован.
The_password_has_been_sent_to_you_by_Email = Пароль отправлен вам на Email.
Others = Другие
District = Район
Districts = Районы
All = Всё
Region = Область
Edit = Редактировать
thous_ha = тыс. га
Thous_ha = Тыс. га
Average = Среднее
Year = Год
Deviation = Отклонение
Dev_of_average = Откл. от среднего
Cancel = Отмена
Responsible_person_for_data_verification = Ответственное лицо по верификации данных
Upload = Загрузить
Delete = Удалить
Download = Скачать
Repeat_the_addition_of_the_entry = Повторить добавление записи
Apply = Применить
Calcel = Закрыть
Hoppers = Личинки (разреженные)
Kuliguli = Кулиги
Adult = Имаго
Restore = Восстановить
Add_more = Добавить ещё
Successfully_added_data = Данные успешно добавлены
Are_you_sure_you_want_to_delete_the_entries = Вы действительно хотите удалить записи?
Increase_by_1 = Увеличить на 1
Decrease_by_1 = Уменьшить на 1
No_results_were_found_for_your_search = По вашему запросу ничего не найдено!
Selection = Выбор
Add_record = Добавить запись
Delete_record = Удалить записи
Filtering = Фильтровать
Invert_selection = Инвертировать выделение
No_locust = Нет саранчи
Triple_rinsed=Трижды промытые
Punctured=Проколотые
Taken_back_to_base=Возвращенные на базу
Left_in_field=Оставленные в поле
Buried=Закопанные
Burned=Сожженные

View File

@ -0,0 +1,535 @@
language = en
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,535 @@
language = en
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,535 @@
language = en
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

534
src/main/java/not_used Normal file
View File

@ -0,0 +1,534 @@
language = en
Language = Language
label_registration = Registration
label_login = Log In
Types_of_locust = Kinds of locust
Unknown_function = Unknown function!
Not_yet_implemented = Not yet implemented!
Type_of_locust = Type of locust
Kind_of_locust = Kind of locust
Name = Name
Types_of_locust = Kinds of locust
Age = Age
Biotop = Biotop
Sorting_index = Index of sorting
Capacity = Capacity
Capacities = Capacities
Types_of_operators = Types of operators
Types_of_operator = Types of operator
Density_of_vegetation = Density of vegetation
Damage = Damage
Density = Density
Directions = Directions
Angle = Angle
Methods_of_calculating_mortality = Methods of calculating mortality
Method_of_calculating_mortality = Method of calculating mortality
Phase = Phase
Condition_of_vegetation = Vegetation state
Actions_of_bands = Actions of hopper bands
Behaviors = Behaviour
Paintings = Paintings
Painting = Painting
Report_by_inspectors = Report by inspectors
From_date = From date
To_date = To date
Surname = Surname
Patronymic = Patronymic
Completed_questionnaires_locusts = Completed questionnaires locusts
Completed_questionnaires_for_the_destruction_of_locusts = Completed questionnaires for the destruction of locusts
FrmLocust = FrmLocust
User = User
Photo = Photo
Photo_name = Photo name
Country = Country
Area = Area
Region = Region
District = District
Observer = Observer
Date = Date
Terrain = Terrain
Latitude = Latitude
Longitude = Longitude
bio_hectare = Surveyed area (ha)
bio_biotope = Type of habitat
bio_greenery = Vegetation
bio_greenery_cover = The vegetation cover
bio_temperature = Weather: air temperature (ºC)
Weather = Weather
bio_wind = Weather: wind (m/s)
Wind_m_s = Weather: wind (m/s)
LOCUST_INFORMATION_INCLUDING_EGG_PODS = _LOCUST INFORMATION (INCLUDING EGG-PODS)
Air_temperature = Weather: air temperature (ºC)
locust_have = Present locusts
locust_populated = Populated area (ha)
eggs_capsules_area = Deposit egg capsules (area in m²)
eggs_capsules_density = Potbelly (density per m²)
Egg_bed_surface_in_ha = Egg-bed (surface in m²)
eggs_capsules = Eggs (average per pod)
eggs_live = Eggs (% viable)
eggs_enemies = The presence of natural enemies (what?)
larva_born = Born
larva_age = Age
larva_painting = Painting
larva_behavior = Behavior
larva_density = Density (per m²)
kuliguli_age = Mean age
kuliguli_density = Tighter. in the swarm (in m²)
kuliguli_size = Swarms size (m²)
kuliguli_count = By swarms
kuliguli_action = Behavior
imago_wing = Stand on the wing
imago_maturity = Maturity
imago_phase = Phase
imago_action = Behavior
imago_density = Density (per he.)
imago_copulation = Mating or egg-laying
imago_flying = Flying
swarm_maturity = Maturity
swarm_density = Density (per m²)
swarm_size = Size rooms (per km²)
swarm_count = Count of swarms
swarm_copulation = Mating or egg-laying
swarm_flying = Flying
swarm_height = Height
Description = Description
Inspector = Inspector
Changed = Changed
Lon = Longitude
Lat = Latitude
locust_type = Kind of locust
imago_laying = Egg-laying
swarm_laying = Egg-laying
Comments = Comments
Locust_Survey_Forms = Locust survey forms
Spray_Monitoring_Forms = Spray monitoring forms
FrmLocustDel = Standard forms for locust
infested_area = Populated area (ha)
treated_area = Cultivated area (ha)
vegetation_type = Type (wild, cultural)
Vegetation_type = Vegetation type
vegetation_height = Height (m)
vegetation_cover = Vegetation cover (%)
vegetation_crop = Vegetation
vegetation_damage = Damage to vegetation cover (%)
vegetation_damage_area = Area damage
insecticide_name = Commercial name
The_active_substance = The active substance
insecticide_concentration = Concentration (%)
insecticide_formulation = Formulation
insecticide_dose = Consumption rate (l/ha)
insecticide_rate = Working fluid flow (l/ha)
insecticide_expiry_date = Expiration
insecticide_mixed = Do insecticide mixed with water or solvent?
insecticide_mixed_name = Solvent
insecticide_mixed_ratio = If so, in what proportion (%)
weather_time_start = Start time
weather_time_end = End time
weather_temperature_start = Temperature at the start (°C)
weather_temperature_end = Temperature at the end (°C)
weather_humidity_start = Humidity start (%)
weather_humidity_end = Humidity end (%)
weather_wind_speed_start = Wind speed at the start (m/s)
weather_wind_speed_end = Wind speed at the end (m/s)
weather_direction_start = Start direction
weather_direction_end = End direction
weather_spray_direction_start = Spray direction at the start
weather_spray_direction_end = Spray direction at the end
locust_speciese = Species
locust_hoppers = Instar larvae
locust_density = Density (per m²)
spray_platform = Spray platform
spray_operator = Operator of spraying
spray_operator_name = Name of operator
spray_manufacturer_name = Brand sprayer
spray_model_name = Model of sprayer
spray_date_calibration = Date of last calibration
spray_height = Atomizer height above ground (m)
spray_width = Width (m)
spray_barrier = Barriers (m)
spray_speed = Speed (km/h)
spray_gps = Antenna: GPS used
spray_marking = Ground marking
efficacy_mortality = Locust mortality (%)
efficacy_passed_time = Elapsed time after working
efficacy_mortality_method = Method of counting mortality
safety_clothing = What protective clothing used operator
safety_inform = Who was notified about the workings?
safety_non_target = Impact on non-target organisms
safety_non_target_effect = If yes, what?
description = description
locust_kuliguli = Kuligi
locust_swarm = Swarms
locust_sparse = Sparse
Air_platform = Air platform
Ground_platform = Ground platform
Hand_platform = Hand platform
Type_of_operator = Type of operator
spray_barrier_width = Width (m)
spray_barrier_space = Space (m)
Terminal = Terminal
Named = Name
Phone = Phone
Serial_number = Serial number
Terminal_model = Terminal model
Terminals = Terminals
Coordinates_Geofence = Coordinates of geozone
Geofence = Geozone
Change_password = Change password
Login = Login
Password = Password
New_password = New password
Repeat_password = Repeat password
User_settings = User settings
Value = Value
Company = Company
Values = Values
Object = Object
sensor = sensor
Groups_of_objects = Groups of objects
Object_of_observation = Object of observation
Access = Access
Identifier = Identifier
Allow = Allow
Sensor = Sensor
objects = objects
Sensor_values = Sensor values
Units_of_measurement = Units of measurement
Fix_date = Fix date
Messages = Messages
Read = Read
Readed = Read
Content = Content
Date_read = Read date
Date_create = Date of creation
Day_mileage_and_speed = Day mileage and speed
Kilometers_distance = Kilometers distance
Kilometers_distance_without_signal = Kilometers distance without signal
Company_site = Company site
Contact_phone = Contact phone
Site = Site
Users = Users
Models_of_terminals = Models of terminals
Sensor_type = Sensor type
Sensor_of_devices = Sensor of devices
Measurement = Measurement
Sensor_model = Sensor model
Rounded_to = Approximately count to
Sensors_models = Sensors models
Count_objects = Number of objects
Group = Group
Stationary = Stationary
Icon = Icon
Objects_of_observation = Objects of observation
Count_of_sensors = Number of sensors
Icons = Icons
name = name
File = File
Size = Size
byte = byte
Geofences = Geozones
Geofence = Geozone
Coordinate = Coordinate
Position = Position
True_position = Right location
outside = outside
inside = inside
Boundary = Boundary
Inform = Inform
Inside = Inside
Sensor_of_object = Sensor of object
Sensors_of_objects = Sensors of objects
Last_value = Last value
Date_of_the_last_value = Date of the last value
Readings = Measerement
Devices = Devices
Sensor_readings = Sensor readings
GPS_readings = GPS data
Fixation_date = Date of fixing
Speed = Speed
Message = Message
Subject = Subject
Creation_date = Date of creation
Contents = Contents
User_messages = User messages
Reading_date = Reading date
Users_messages = Users messages
The_boundary_values_of_the_sensors = The limit values of the sensors
Minimum_value = Minimum value
Maximum_value = Maximum value
Only_on_the_boundary = Only on the boundary
Action = Action
Rule = Rule
Actions = Actions
Access_role = Access role
Parental_role = Parental_role
Role_name = Role name
Role_description = Role description
Role = Role
Phones = Phones
Password_expiration = Password expiration
Renewal_password = Renewal password
days = days
day = day
S_N_P = S.N.P.
Last_enter = Last enter
Roles = Roles
User_roles = User roles
Synchronization_objects = Synchronization objects
Synchronization_service = Synchronization service
Synchronization_order = Synchronization order
The_interval_between_the_update_in_s = The interval between the update in (s)
At_a_time = Records per one time
Time_of_the_last_synchronization = Time of the last synchronization
Service = Service
Order = Order
Interval = Interval
Limit = Limit
Synchronization_services = Synchronization services
Host = Host
History = History
Table = Table
Field = Field
Data = Data
Short_name = Short name
Translation = Translation
Sprayer_type = Sprayer type
Sprayers = Sprayers
Sprayer = Sprayer
Sprayer_type_name = Sprayer type name
Countries = Countries
Regions = Regions
Automated_system_of_data_collection = Automated system of data collection
Download_android_app_Inspector = Download the android app of Inspector
Run_the_application_of_the_situational_center = Run the application of the situational center
For_any_questions_contact_us_at_tel_Fax = Contact us by phone/fax
Your_session_is_canceled = Your session is canceled!
Simultaneous_operation_of_multiple_users = Simultaneous operation of multiple users!
You_are_not_logged_in = You are not logged in!
Not_found_the_requested_node: = Not found the requested node:
The_number_of_records_is_not_equal_to_one = The number of records is not equal to one!
Registration_Form_Inspector = Registration Form Inspector
Post = Post
The_device_ID = The device ID
Security_Code = Security Code
Update = Update
image = image
Registering = Registering
configuration_section_s = configuration section; %s
configuration_option_s = configuration option; %s
Locust_survey = Locust survey
Spray_monitoring = Spray monitoring
Reports = Reports
Report = Report
Map_layers = Map layers
Administration = Administration
Completed_forms_by_tablets = Completed forms by tablets
Filling_forms_by_countries = Filling forms by countries
Standard_survey_forms = Standard survey forms
Companies = Companies
Report_by_countries = Report by countries
Lists = Lists
Members = Members
Photo = Photo
Egg_pods_density_m2 = Egg-pods (density/m²)
Egg_pods_density = Egg-pods density
Egg_pod = Egg-pod
Eggs_average_number_egg_pod = Eggs (average number egg pod)
Number_forms = Number of forms
Open_data_on_the_map = Open data on the map
From_date = From date
To_date = To date
Distribution_of_locust = Information on the distribution of locust
Hide = Hide
For_what_year = For what year
Invalid_username_and_or_password = Invalid username and/or password!
Automated_system_of_data_collection_ASDC = Automated system of data collection (ASDC)
Method_filling_form = Method of filling the form
From_PDA = From tablet
From_WEB_interface = From WEB interface
PDA_registered = PDA registered
Yes = Yes
Not = Not
Displayed_data = Displayed data
Adult_density_m2 = Adult (density/m²)
Adult_density = Adult density
Hopper_density_m2 = Hopper (density/m²)
Swarms = Swarms
Bands = Hopper bands
Band_sizes_m2 = Band sizes (m²)
Open_in_a_table_format = Open in a table format
Request_data = Request data
Method_filling_form = Method filling form
From_DPA = From DPA
From_WEB_interface = From WEB interface
PDA_registered = Tablets registered
Yes = Yes
Not = Not
Open_in_a_table_format = Open in a table format
Request_data = Request data
Displayed_data = Displayed data
Open_in_a_table_format = Open in a table format
Request_data = Request data
The_tablet = The tablet
Spray_Monitoring_Form = Spray Monitoring Form
Information_on_the_distribution_of_locust = Information about locusts distribution and its control
Organization = Organization
User_roles = User_roles
Layout = Layer
Markings = Markings
Formulation = Formulation
Fledgling = Fledgling
Borns = Hatching
Breeding = Behaviour
Containers = Containers
Height = Height
Enemies = Natural enemies present
Report_by_tablets = Tablets report
Value = Value
Days = Days
Hours = Hours
Company_User = Company->User
Object_Geofence = Object->Geozone
Sensor_for_ComboBox = Sensor for drop-down list
SprayersTypes = Sprayers Types
CountriesRegions = The boundaries of Regions
CIT_Italian_locust = CIT - Italian locust
DMA_Moroccan_locust = DMA - Moroccan locust
LMI_Asian_migratory_locust = LMI - Asian migratory locust
Substrate = Substrate
Displaying_data = Displaying data
Show_data = Show data
All_types = All types
All_kinds = All kinds
Maps_of_areas_infested_above_Economic_Threshold_ET = Maps of areas infested above Economic Threshold (ET)
Maps_of_treated_areas_above_ET = Maps of treated areas above ET
Map_of_the_level_of_threat = Map of the level of threat
Download_QGIS_project = Download QGIS project
Caution = Caution
Calm = Calm
Danger = Danger
Increase = Increase
Decrease = Decrease
On_the_same_level = On the same level
Normal_Multiyear_average_level = Normal/Multiyear average level
Device_id = Device id
All_countries_of_CCA = All countries of CCA
The_Caucasus_countries_and_Russia = The Caucasus countries and Russia
Countries_of_Central_Asia_and_Russia = Countries of Central Asia and Russia
The_forecast_of_hatching_periods = The forecast of hatching periods
Weather_forecast = Weather forecast
soil_temperature = soil temperature
Soil_temperature = Soil temperature
Passwords_did_not_match = Passwords do not coincide!
The_s_is_not_Email = The "%s" is not Email!
Password_changed_successfully = Password changed successfully.
Failed_to_change_password = Failed to change password.
Check_the_entered_data = Check the entered data.
for_ = for
Earth_temperature = Earth temperature
Point = Point
Forecast_of_hours = Hours of forecast
hours = hours
Change_login_password = Change login/password
Type = Type
Legend = Legend
Spraying = Spraying
Chart = Chart
Percent = Percent
For_s_year = For %s year
and = and
Time_and_date_of_generation = Time and date of generation
Filter_options = Filter_options
Export_to_Excel = Export to Excel
Preparing_of_report = Preparing of report
Download_report = Download report
Old_password = Old password
Not_filled_Email_address = Not filled Email address
Wrong_XML_document = Wrong XML document
Organizations = Organizations
Vegetation = Vegetation
Please_enter_a_valid_email_address = Please enter a valid Email address
Log_in = Log in
Registration = Registration
Password_recovery = Password recovery
The_s_field_is_empty = The "%s" field is empty
New_user_is_registered = New user is registered.
The_password_has_been_sent_to_you_by_Email = The password has been sent to you by Email.
Others = Others
Absent = Absent
No_data = No data
District = District
Districts = Districts
The_tablets = The tablets
Other = Other
Regions = Oblasts
Region = Oblast
All = All
Edit = Edit
thous_ha = thous. ha
Thous_ha = Thous. ha
Average = Average
Year = Year
Deviation = Deviation
Dev_of_average = Dev. of average
Average = Average
Layouts = Layers
The_tabblet = Tablet
Forms_for_locust_survey = Locust Survey Form
Forms_for_spray_monitoring = Spray Monitoring Form
The_tablet_registered = The tablet is registered
Area_infested_ha = Infested area (ha)
Minimum_density_in_the_band_in_m2 = Minimum band density (/m²)
Maximum_density_in_the_band_in_m2 = Maximum band density (/m²)
Adult_density_ha = Adult density (/ha)
Adult_density_m2 = Adult density (/m²)
Feeding_and_roosting = Feeding and roosting
Density_of_swarm = Swarm density
Swarm_size_ha = Swarm size (ha)
Number_of_swarms = Number of swarms
Flying_direction = Flying direction
Flying_height = Flying height
Weather_air_temperature_C = Weather: air temperature (ºC)
Locust_Survey_Form = Locust Survey Form
Locust_Survey_Forms = Locust survey forms
Latitude_center_portion = Latitude (site center)
Longitude_center_portion = Longitude (site center)
INSECTICIDE_DATA = Insecticide information
Concentration_A_S = Concentration (%)
Relative_humidity_start = Relative humidity at the start (%)
Relative_humidity_end = Relative humidity at the end (%)
Wind_direction_start = Wind direction at the start
Wind_direction_end = Wind direction at the end
Density_m2 = Density (/m2)
Model_sprayer = Sprayer model
Biological_efficiency_of_treatment = Biological efficiency of treatment (%)
Inform_abaut_spraying = Informed about spraying
Inspect_thous_ha = Surveyed (thous. ha)
Responsible_person = Responsible person for the tablet (inspector)
Upload = Upload
Delete = Delete
Download = Download
Hoppers = Hoppers (scattered)
Kuliguli = Bands
Adult = Adult
Restore = Restore
Add_more = Add more
Successfully_added_data = Successfully added data
Are_you_sure_you_want_to_delete_the_entries = Are you sure you want to delete the entries?
Increase_by_1 = Increase by 1
Decrease_by_1 = Decrease by 1
No_results_were_found_for_your_search = No results were found for your search!
Selection = Selection
Add_record = Add record
Delete_record = Delete record
Filtering = Filtering
Invert_selection = Invert selection
Antenna_DGPS_used = Antenna: DGPS used
No_locust = No locust
Total_volume_of_working_solution_actually_applied_l = Total volume of working solution actually applied (l)
Triple_rinsed=Triple_rinsed
Punctured=Punctured
Taken_back_to_base=Taken_back_to_base
Left_in_field=Left_in_field
Buried=Buried
Burned=Burned

View File

@ -0,0 +1,65 @@
//From: http://www.codejava.net/java-ee/jsp/sending-e-mail-with-jsp-servlet-and-javamail
package tools;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* A utility class for sending e-mail messages
* @author www.codejava.net
*
*/
public class EmailUtility {
public static void sendEmail(String host, String port,
final String userName, final String password, String toAddress,
String subject, String message) throws AddressException,
MessagingException
{
// sets SMTP server properties
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", port);
properties.put("mail.smtp.auth", "true");
//properties.put("mail.smtp.starttls.enable","true"); STARTTLS requested but already using SSL
properties.put("mail.smtp.EnableSSL.enable","true");
properties.put("mail.smtp.socketFactory.port", port);
properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
//properties.put("mail.debug", "true");
// creates a new session with an authenticator
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
};
Session session = Session.getInstance(properties, auth);
//creates a new e-mail message
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(userName));
InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
msg.setRecipients(Message.RecipientType.TO, toAddresses);
msg.setSubject(subject);
msg.setSentDate(new Date());
//msg.setText(message);
msg.setContent(message, "text/html; charset=utf-8");
// sends the e-mail
Transport.send(msg);
}
}

View File

@ -0,0 +1,94 @@
package tools;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PreparedStatementNamed {
private class HMap{
public String name = "";
public int pos = -1;
public HMap(String name,int pos) {
this.name = name;
this.pos = pos;
}
}
private List< HMap > fields = new ArrayList< HMap >();
private PreparedStatement m_prepStmt;
public PreparedStatementNamed(Connection conn, String sql) throws SQLException {
int cnt=0;
int pos = 0;
while((pos = sql.indexOf("${")) != -1) {
int end = sql.substring(pos).indexOf("}");
if (end == -1)
end = sql.length();
else
end += pos+1;
cnt++;
fields.add(new HMap(sql.substring(pos+2,end-1),cnt));
sql = sql.substring(0, pos) + "?" + sql.substring(end); //Removing a parameter from a string
}
m_prepStmt = conn.prepareStatement(sql);
}
public void setInt(String name, int value) throws SQLException {
for(int i=0;i<fields.size();i++) {
if(fields.get(i).name.equals(name)) {
m_prepStmt.setInt(fields.get(i).pos, value);
}
}
}
public void setBoolean(String name, int value) throws SQLException {
for(int i=0;i<fields.size();i++) {
if(fields.get(i).name.equals(name)) {
if(value==0)
m_prepStmt.setBoolean(fields.get(i).pos, false);
else
m_prepStmt.setBoolean(fields.get(i).pos, true);
}
}
}
public void setNULLInt(String name) throws SQLException {
for(int i=0;i<fields.size();i++) {
if(fields.get(i).name.equals(name)) {
m_prepStmt.setNull(fields.get(i).pos,Types.INTEGER);
}
}
}
public void setNULLBoolean(String name) throws SQLException {
for(int i=0;i<fields.size();i++) {
if(fields.get(i).name.equals(name)) {
m_prepStmt.setNull(fields.get(i).pos,Types.BOOLEAN);
}
}
}
/*private int getIndex(String name) {
size()
} */
public PreparedStatement getPreparedStatement() {
return m_prepStmt;
}
/*public ResultSet executeQuery() throws SQLException {
return m_prepStmt.executeQuery();
}
public void close() throws SQLException {
m_prepStmt.close();
}*/
}

View File

@ -0,0 +1,21 @@
package tools;
public class STools {
public static String CutBeforeFirst(StringBuffer str,String ch)
{
int pos=str.indexOf(ch);
String result="";
if(pos==-1)
{
result.concat(str.toString());
str.delete(0,str.length());
}else
{
result=str.substring(0,pos);
str.delete(0,pos+1);
}
return result;
}
}

View File

@ -0,0 +1,44 @@
package tools;
public class User {
public String id; //User id from database
public String name; //Name Surname Patronymic
public String language_id; //User language
public String role; //User role
public String country_id; //User role
public User()
{
id="null"; //null <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> SQL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ${_user_id} <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
name="___";
language_id="1";
role="___";
country_id="";
}
public User(String name)
{
super();
id="null";
this.name=name;
language_id="1";
role="___";
country_id="";
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void Logout()
{
id="null";
name="___";
language_id="1";
role="___";
country_id="";
}
}

View File

@ -0,0 +1,2 @@
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<config>
<db-url>jdbc:postgresql://91.201.214.156:5432/CCALM</db-url>
<!--db-url>jdbc:postgresql://127.0.0.1:5432/CCALM</db-url-->
<!--db-url>jdbc:postgresql://192.168.0.83:5432/CCALM</db-url-->
<db-login>postgres</db-login>
<db-password>PasSecrKey1</db-password>
<mail-host>smtp.yandex.ru</mail-host>
<mail-port>465</mail-port>
<mail-login>info@ccalm.org</mail-login>
<mail-password>fu2lpsoGPGiq1xlRm8ag</mail-password>
<!--data-dir>O:\temp\CCALM\</data-dir-->
<data-dir>/temp/CCALM/</data-dir>
<metadata>engine/metadata.xml</metadata>
</config>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="kz.locust.CCALM">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
</log4j:configuration>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="kz.locust.CCALM" />
</beans:beans>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760" />
</bean>
</beans>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Select the file with CSV to upload and parsing.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<form action="./AcceptCSV" method="post" enctype="multipart/form-data">
Select CSV UTF-8 file to upload and export:
<input type="file" name="file" id="fileToUpload"><br>
<input type="checkbox" name="skip" value="1">Skip first line<Br>
<input type="submit" value="Upload" name="submit">
</form>
<br><br>
${PreviewTable}
<br><br><br>
<textarea style="width: 1000px;height: 1000px;">${PreviewGEOJSON}</textarea>
<br><br><br>
<textarea style="width: 1400px;height: 1000px;">${PreviewSQL}</textarea>
</body>
</html>

View File

@ -0,0 +1,91 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="./resources/favicon.ico" />
<title>Automated system of data collection</title>
<meta name="yandex-verification" content="2cb5374be0668fe9" />
<meta name="description" content="According to the implementation of the Road Map program to improve national and regional locust control in the Caucasus and Central Asia (CCA) developed a system of monitoring and analysis designed to control locusts in the CCA using a geographic information system and remote sensing technology">
<style type="text/css">
html,body
{
height:100%;
min-height:100%;
margin:0px;
padding:0px;
text-align:center;
background-color: #f0f0f0;
}
.content
{
max-width:960px;
height:100%;
min-height:100%;
margin:0 auto;
text-align:left;
background-color: #ffffff;
}
</style>
<script type="text/javascript">
function setCookie (name, value, expires, path, domain, secure)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + expires);
expires=exdate.toUTCString()
document.cookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
if(window.location.host.indexOf('locust.kz')>=0){
window.location.href = "https://ccalm.org";
}
if(window.location.host.indexOf('ccalm.org')>=0 && location.protocol == 'http:'){
location.href = location.href.replace(/^http:/, 'https:')
}
</script>
</head>
<body>
<div class='content'>
<div style="padding: 5px; background-color: #ffa100;"><table cellspacing="0" cellpadding="0" border="0" style="width: 100%"><tr><td style="width: 50px;"><a href="/"><img src="./resources/images/locust.png" style="width: 70px;"></a></td><td style="text-align: right; vertical-align: top;"><!--a href="#" onclick="setCookie ('lng', 'en', 365, '', '', ''); window.location.reload();">English</a--></td></tr></table></div>
<div style="padding: 5px;">
<h1 style="text-align: center;">Caucasus and Central Asia Locusts Management system (CCALM)</h1>
<p style="font-size: 14pt; text-indent: 25px;">
<img src="./resources/images/locust.png" align="right" style="margin: 5px;">
According to the implementation of the Road Map "program to improve national and regional locust control in the Caucasus and Central Asia (CCA)" developed a system of monitoring and analysis designed to control locusts in the CCA using a geographic information system and remote sensing technology.
</p>
<!--p style="font-size: 14pt; text-indent: 25px;">
To use the "Automated system of data collection" you have to agree to the <a href="#">terms</a> and <a href="#">sign up</a>.
<p-->
<center>
<table border="0"><tr><td style="width: 300px; padding: 20px">
<a target="_blank" href="https://play.google.com/store/apps/details?id=kz.istt.locust"><center>Automated system of data collection (ASDC)<br>
<img src="./resources/images/google_android_download.png"></center></a>
</td><td style="width: 300px; padding: 20px">
<a href="#" onclick="window.open('./engine/'); return false;"><center>Caucasus and Central Asia Locusts Management system (CCALM)<br>
<img src="./resources/images/flex.png"></center></a>
</td></tr></table>
</center>
<br>
<center>For any questions contact us at tel./Fax 8(727)3967038, E-mail: <a href="mailto:info@ccalm.org">info@ccalm.org</a>.</center>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,25 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Select the file with CSV to upload and parsing.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<form action="./AcceptJSON" method="post" enctype="multipart/form-data">
Select CSV UTF-8 file to upload and export:
<input type="file" name="file" id="fileToUpload"><br>
<input type="submit" value="Upload" name="submit">
</form>
<br><br>
${PreviewTable}
<!--br><br><br>
<textarea style="width: 1000px;height: 1000px;">${PreviewGEOJSON}</textarea>
<br><br><br>
<textarea style="width: 1400px;height: 1000px;">${PreviewSQL}</textarea-->
</body>
</html>

View File

@ -0,0 +1,102 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="./resources/favicon.ico" />
<title>Automated system of data collection</title>
<meta name="yandex-verification" content="2cb5374be0668fe9" />
<meta name="description" content="According to the implementation of the Road Map program to improve national and regional locust control in the Caucasus and Central Asia (CCA) developed a system of monitoring and analysis designed to control locusts in the CCA using a geographic information system and remote sensing technology">
<style type="text/css">
html,body
{
height:100%;
width:100%;
margin:0px;
padding:0px;
text-align:center;
background-color: #f0f0f0;
}
.content
{
max-width:960px;
margin:0 auto;
padding:10px;
text-align:left;
background-color: #ffffff;
}
</style>
<script type="text/javascript">
if(window.location.host.indexOf('locust.kz')>=0){
window.location.href = "https://ccalm.org";
}
if(window.location.host.indexOf('ccalm.org')>=0 && location.protocol == 'http:'){
location.href = location.href.replace(/^http:/, 'https:')
}
</script>
</head>
<body>
<div class='content'>
<h1>Политика конфиденциальности</h1>
<p align="justify">Компания ДТОО "Институт космической техники и технологий" (в дальнейшем ИКТТ) заботится о конфиденциальности данных своих клиентов. Для этих целей была разработана политика конфиденциальности, включающая правила сбора, использования, раскрытия, передачи и хранения Вашей информации. Ознакомьтесь с нашими правилами соблюдения.</p>
<h2>Сбор и использование личной информации</h2>
<p align="justify">Личной информацией являются данные, которые можно использовать для установления личности человека или для связи с ним.
Если вы обратитесь в ИКТТ, вас могут попросить предоставить личную информацию. ИКТТ использует ее в соответствии с данной политикой конфиденциальности. Эти сведения могут быть объединены с другими в целях предоставления наших товаров, услуг, материалов и рекламы. Вы не обязаны предоставлять личную информацию, которую мы запросили, но если вы ее не предоставите, во многих случаях мы не сможем предоставить вам свои товары или услуги, а также ответить на ваши запросы.
Вот несколько примеров того, какую личную информацию может собирать и использовать ИКТТ.</p>
<h2>Какую личную информацию мы собираем</h2>
<ul>
<li style="text-align: justify;">Когда вы создаете BFT ID, регистрируете свои продукты, обращаетесь для получения кредита, приобретаете продукт, связываетесь с нами или принимаете участие в онлайн-исследовании, мы можем собирать различные сведения, включая ваше имя, почтовый адрес, номер телефона, адрес электронной почты, предпочтительные способы связи, а также данные кредитной карты.</li>
<li style="text-align: justify;">Когда вы отправляете подарочные сертификаты и товары, а также приглашаете других пользователей на форумы ИКТТ, мы можем собирать предоставленную вами информацию об этих людях, включая их имена, почтовые адреса, адреса электронной почты и номера телефонов.</li>
<li style="text-align: justify;">Мы можем запросить данные удостоверения личности для рассмотрения возможности предоставления кредита или выставления платежного поручения для оплаты товаров через банковское отделение.</li>
</ul>
<h2>Как мы используем личную информацию</h2>
<ul>
<li style="text-align: justify;">Мы можем использовать личную информацию для внутренних целей, например при проведении аудита, анализа данных и исследований, направленных на улучшение продуктов и услуг, а также способов общения с клиентами.</li>
<li style="text-align: justify;">Периодически мы используем собранную личную информацию для рассылки важных уведомлений, например сообщений о покупках и об изменениях в условиях и политиках.</li>
<li style="text-align: justify;">Если вы принимаете участие в лотерее, конкурсе или аналогичном мероприятии, мы можем использовать предоставленную вами информацию при организации этих событий.</li>
</ul>
<h2>Сбор и использование информации, не являющейся личной</h2>
<p align="justify">Мы также осуществляем сбор данных, которые не указывают непосредственно на конкретного человека. Мы можем собирать, использовать, передавать и раскрывать такие сведения с любой целью. Вот несколько примеров того, какую информацию, не являющуюся личной, мы собираем и используем.</p>
<ul>
<li style="text-align: justify;">Для того чтобы лучше понимать поведение клиентов и улучшать наши продукты, услуги и рекламу, мы можем собирать такие сведения, как род деятельности, язык, почтовый индекс, телефонный код, идентификатор устройства, местоположение, в котором используется купленный товар.</li>
<li style="text-align: justify;">Мы можем также собирать информацию о том, чем интересуются пользователи на нашем веб-сайте, на официальных социальных страницах компании. Данные сведения позволяют нам предоставлять клиентам более полезную информацию, а также понять, какие разделы веб-сайта, продукты и сервисы пользуются повышенным интересом. В контексте данной политики конфиденциальности обобщенные данные рассматриваются в качестве информации, не являющейся личной.</li>
</ul>
<p align="justify">При объединении информации, не являющейся личной, с личной информацией объединенные данные будут считаться личными, пока они остаются объединенными.</p>
<h2>Раскрытие информации третьим лицам</h2>
<p align="justify">Эта информация не передается третьим лицам.</p>
<h2>Поставщики услуг</h2>
<p align="justify">ИКТТ обменивается личными данными пользователей с компаниями, которые предоставляют такие услуги, как обработка информации, выдача или продление срока кредита, выполнение заказов клиентов, доставка продуктов, управление данными клиентов и их расширение, обслуживание клиентов, оценка заинтересованности пользователей в наших продуктах и услугах, а также проведение исследований и опросов с целью определения степени удовлетворенности. Эти компании обязуются защищать ваши данные и могут быть расположены только на территории Республики Казахстан.</p>
<h2>Прочее</h2>
<p align="justify">Компания ИКТТ может быть обязана раскрыть вашу личную информацию в соответствии с законодательством, требованиями судопроизводства, судебного разбирательства или по запросу государственных органов страны вашего пребывания или других стран. Мы также можем раскрыть вашу личную информацию, если это будет необходимо в целях национальной безопасности, исполнения закона или в иных общественно важных целях.</p>
<p align="justify">Мы также можем раскрыть вашу личную информацию, если это будет необходимо для выполнения наших условий или защиты наших операций или пользователей. Кроме того, в случае реорганизации, слияния или продажи компаний мы можем передавать личные данные соответствующей третьей стороне.</p>
<h2>Защита личной информации</h2>
<p align="justify">ИКТТ очень серьезно относится к защите вашей личной информации. Онлайн-сервисы ИКТТ, такие как Корзина и Личный кабинет, защищают вашу личную информацию во время передачи при помощи шифрования, например по протоколу SSL. Для хранения вашей личной информации ИКТТ использует компьютерные системы с ограниченным доступом, расположенные в помещениях с физическими средствами охраны. Данные Личного кабинета хранятся в зашифрованном виде, в том числе при использовании сторонних хранилищ.</p>
<p align="justify">Когда вы пользуетесь некоторыми продуктами, услугами или приложениями Apple, публикуете сообщения в социальных сервисах, ведете переписку в чате, публикуемую вами личную информацию могут видеть, читать, собирать и использовать другие пользователи. Вы несете ответственность за то, какую информацию вы раскрываете в таких случаях. Например, если вы указываете свои имя и адрес электронной почты в обсуждении на форуме или блоге, такая информация становится общедоступной. Проявляйте осторожность в таких ситуациях.</p>
<h2>Целостность и хранение личной информации</h2>
<p align="justify">С помощью ИКТТ вы легко сможете обеспечить точность, полноту и актуальность своей личной информации. Мы будем хранить вашу личную информацию в течение срока, необходимого для исполнения обязательств, которые указаны в данной политике конфиденциальности, если иное не предусмотрено законом.</p>
<h2>Доступ к личной информации</h2>
<p align="justify">Вы можете помочь нам обеспечить точность, полноту и актуальность вашей контактной информации и личных предпочтений, выполнив вход в учетную запись на сайте <a href="https://ccalm.org" target="_blank">ccalm.org</a>. Что касается остальных данных, мы обеспечим вам доступ к вашей личной информации, чтобы вы, в частности, могли подать запрос об исправлении или удалении данных, кроме случаев, когда хранение информации предусмотрено законом или необходимо компании ИКТТ для осуществления деятельности в рамках действующего законодательства. Мы можем отказать в исполнении запросов, которые необоснованны либо обременительны, нарушают конфиденциальность других пользователей, не имеют смысла или доступ к которым в соответствии с локальным законодательством не является обязательным. Запросы на доступ к данным, исправление или удаление данных можно подать по электронной почте.</p>
<h2>Глобальные обязательства по конфиденциальности</h2>
<p align="justify">В целях защиты личной информации мы знакомим сотрудников ИКТТ с рекомендациями по безопасности и конфиденциальности и обеспечиваем их строгое исполнение в компании.</p>
<h2>Вопросы о конфиденциальности</h2>
<p align="justify">Если у вас возникли вопросы или сомнения по поводу политики конфиденциальности ИКТТ или обработки данных либо вы хотите сообщить о предполагаемом нарушении местных законов о конфиденциальности, свяжитесь с нами по почте info@ccalm.org. Вы можете в любой момент связаться с нами по телефону +7 (727) 229-44-81.</p>
<p align="justify"><p align="justify">Мы проверяем все обращения и стараемся отвечать на них в кратчайшие сроки. Если вы недовольны полученным ответом, направьте жалобу в соответствующий регулятивный орган своей страны. Если вы хотите получить исчерпывающую информацию о способах подать жалобу, уместных в ваших обстоятельствах, обратитесь к нам.</p>
<p align="justify">Компания ИКТТ периодически обновляет политику конфиденциальности. При изменении политики мы размещаем уведомление об этом на нашем веб-сайте вместе с новым текстом политики конфиденциальности.</p>
<p>ДТОО "Институт космической техники и технологий", Almaty, Kazakhstan</p>
</div>
</body>
</html>

View File

@ -0,0 +1,102 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="./resources/favicon.ico" />
<title>Automated system of data collection</title>
<meta name="yandex-verification" content="2cb5374be0668fe9" />
<meta name="description" content="According to the implementation of the Road Map program to improve national and regional locust control in the Caucasus and Central Asia (CCA) developed a system of monitoring and analysis designed to control locusts in the CCA using a geographic information system and remote sensing technology">
<style type="text/css">
html,body
{
height:100%;
width:100%;
margin:0px;
padding:0px;
text-align:center;
background-color: #f0f0f0;
}
.content
{
max-width:960px;
margin:0 auto;
padding:10px;
text-align:left;
background-color: #ffffff;
}
</style>
<script type="text/javascript">
if(window.location.host.indexOf('locust.kz')>=0){
window.location.href = "https://ccalm.org";
}
if(window.location.host.indexOf('ccalm.org')>=0 && location.protocol == 'http:'){
location.href = location.href.replace(/^http:/, 'https:')
}
</script>
</head>
<body>
<div class='content'>
<h1>Политика конфиденциальности</h1>
<p align="justify">Компания ДТОО "Институт космической техники и технологий" (в дальнейшем ИКТТ) заботится о конфиденциальности данных своих клиентов. Для этих целей была разработана политика конфиденциальности, включающая правила сбора, использования, раскрытия, передачи и хранения Вашей информации. Ознакомьтесь с нашими правилами соблюдения.</p>
<h2>Сбор и использование личной информации</h2>
<p align="justify">Личной информацией являются данные, которые можно использовать для установления личности человека или для связи с ним.
Если вы обратитесь в ИКТТ, вас могут попросить предоставить личную информацию. ИКТТ использует ее в соответствии с данной политикой конфиденциальности. Эти сведения могут быть объединены с другими в целях предоставления наших товаров, услуг, материалов и рекламы. Вы не обязаны предоставлять личную информацию, которую мы запросили, но если вы ее не предоставите, во многих случаях мы не сможем предоставить вам свои товары или услуги, а также ответить на ваши запросы.
Вот несколько примеров того, какую личную информацию может собирать и использовать ИКТТ.</p>
<h2>Какую личную информацию мы собираем</h2>
<ul>
<li style="text-align: justify;">Когда вы создаете BFT ID, регистрируете свои продукты, обращаетесь для получения кредита, приобретаете продукт, связываетесь с нами или принимаете участие в онлайн-исследовании, мы можем собирать различные сведения, включая ваше имя, почтовый адрес, номер телефона, адрес электронной почты, предпочтительные способы связи, а также данные кредитной карты.</li>
<li style="text-align: justify;">Когда вы отправляете подарочные сертификаты и товары, а также приглашаете других пользователей на форумы ИКТТ, мы можем собирать предоставленную вами информацию об этих людях, включая их имена, почтовые адреса, адреса электронной почты и номера телефонов.</li>
<li style="text-align: justify;">Мы можем запросить данные удостоверения личности для рассмотрения возможности предоставления кредита или выставления платежного поручения для оплаты товаров через банковское отделение.</li>
</ul>
<h2>Как мы используем личную информацию</h2>
<ul>
<li style="text-align: justify;">Мы можем использовать личную информацию для внутренних целей, например при проведении аудита, анализа данных и исследований, направленных на улучшение продуктов и услуг, а также способов общения с клиентами.</li>
<li style="text-align: justify;">Периодически мы используем собранную личную информацию для рассылки важных уведомлений, например сообщений о покупках и об изменениях в условиях и политиках.</li>
<li style="text-align: justify;">Если вы принимаете участие в лотерее, конкурсе или аналогичном мероприятии, мы можем использовать предоставленную вами информацию при организации этих событий.</li>
</ul>
<h2>Сбор и использование информации, не являющейся личной</h2>
<p align="justify">Мы также осуществляем сбор данных, которые не указывают непосредственно на конкретного человека. Мы можем собирать, использовать, передавать и раскрывать такие сведения с любой целью. Вот несколько примеров того, какую информацию, не являющуюся личной, мы собираем и используем.</p>
<ul>
<li style="text-align: justify;">Для того чтобы лучше понимать поведение клиентов и улучшать наши продукты, услуги и рекламу, мы можем собирать такие сведения, как род деятельности, язык, почтовый индекс, телефонный код, идентификатор устройства, местоположение, в котором используется купленный товар.</li>
<li style="text-align: justify;">Мы можем также собирать информацию о том, чем интересуются пользователи на нашем веб-сайте, на официальных социальных страницах компании. Данные сведения позволяют нам предоставлять клиентам более полезную информацию, а также понять, какие разделы веб-сайта, продукты и сервисы пользуются повышенным интересом. В контексте данной политики конфиденциальности обобщенные данные рассматриваются в качестве информации, не являющейся личной.</li>
</ul>
<p align="justify">При объединении информации, не являющейся личной, с личной информацией объединенные данные будут считаться личными, пока они остаются объединенными.</p>
<h2>Раскрытие информации третьим лицам</h2>
<p align="justify">Эта информация не передается третьим лицам.</p>
<h2>Поставщики услуг</h2>
<p align="justify">ИКТТ обменивается личными данными пользователей с компаниями, которые предоставляют такие услуги, как обработка информации, выдача или продление срока кредита, выполнение заказов клиентов, доставка продуктов, управление данными клиентов и их расширение, обслуживание клиентов, оценка заинтересованности пользователей в наших продуктах и услугах, а также проведение исследований и опросов с целью определения степени удовлетворенности. Эти компании обязуются защищать ваши данные и могут быть расположены только на территории Республики Казахстан.</p>
<h2>Прочее</h2>
<p align="justify">Компания ИКТТ может быть обязана раскрыть вашу личную информацию в соответствии с законодательством, требованиями судопроизводства, судебного разбирательства или по запросу государственных органов страны вашего пребывания или других стран. Мы также можем раскрыть вашу личную информацию, если это будет необходимо в целях национальной безопасности, исполнения закона или в иных общественно важных целях.</p>
<p align="justify">Мы также можем раскрыть вашу личную информацию, если это будет необходимо для выполнения наших условий или защиты наших операций или пользователей. Кроме того, в случае реорганизации, слияния или продажи компаний мы можем передавать личные данные соответствующей третьей стороне.</p>
<h2>Защита личной информации</h2>
<p align="justify">ИКТТ очень серьезно относится к защите вашей личной информации. Онлайн-сервисы ИКТТ, такие как Корзина и Личный кабинет, защищают вашу личную информацию во время передачи при помощи шифрования, например по протоколу SSL. Для хранения вашей личной информации ИКТТ использует компьютерные системы с ограниченным доступом, расположенные в помещениях с физическими средствами охраны. Данные Личного кабинета хранятся в зашифрованном виде, в том числе при использовании сторонних хранилищ.</p>
<p align="justify">Когда вы пользуетесь некоторыми продуктами, услугами или приложениями Apple, публикуете сообщения в социальных сервисах, ведете переписку в чате, публикуемую вами личную информацию могут видеть, читать, собирать и использовать другие пользователи. Вы несете ответственность за то, какую информацию вы раскрываете в таких случаях. Например, если вы указываете свои имя и адрес электронной почты в обсуждении на форуме или блоге, такая информация становится общедоступной. Проявляйте осторожность в таких ситуациях.</p>
<h2>Целостность и хранение личной информации</h2>
<p align="justify">С помощью ИКТТ вы легко сможете обеспечить точность, полноту и актуальность своей личной информации. Мы будем хранить вашу личную информацию в течение срока, необходимого для исполнения обязательств, которые указаны в данной политике конфиденциальности, если иное не предусмотрено законом.</p>
<h2>Доступ к личной информации</h2>
<p align="justify">Вы можете помочь нам обеспечить точность, полноту и актуальность вашей контактной информации и личных предпочтений, выполнив вход в учетную запись на сайте <a href="https://ccalm.org" target="_blank">ccalm.org</a>. Что касается остальных данных, мы обеспечим вам доступ к вашей личной информации, чтобы вы, в частности, могли подать запрос об исправлении или удалении данных, кроме случаев, когда хранение информации предусмотрено законом или необходимо компании ИКТТ для осуществления деятельности в рамках действующего законодательства. Мы можем отказать в исполнении запросов, которые необоснованны либо обременительны, нарушают конфиденциальность других пользователей, не имеют смысла или доступ к которым в соответствии с локальным законодательством не является обязательным. Запросы на доступ к данным, исправление или удаление данных можно подать по электронной почте.</p>
<h2>Глобальные обязательства по конфиденциальности</h2>
<p align="justify">В целях защиты личной информации мы знакомим сотрудников ИКТТ с рекомендациями по безопасности и конфиденциальности и обеспечиваем их строгое исполнение в компании.</p>
<h2>Вопросы о конфиденциальности</h2>
<p align="justify">Если у вас возникли вопросы или сомнения по поводу политики конфиденциальности ИКТТ или обработки данных либо вы хотите сообщить о предполагаемом нарушении местных законов о конфиденциальности, свяжитесь с нами по почте info@ccalm.org. Вы можете в любой момент связаться с нами по телефону +7 (727) 229-44-81.</p>
<p align="justify"><p align="justify">Мы проверяем все обращения и стараемся отвечать на них в кратчайшие сроки. Если вы недовольны полученным ответом, направьте жалобу в соответствующий регулятивный орган своей страны. Если вы хотите получить исчерпывающую информацию о способах подать жалобу, уместных в ваших обстоятельствах, обратитесь к нам.</p>
<p align="justify">Компания ИКТТ периодически обновляет политику конфиденциальности. При изменении политики мы размещаем уведомление об этом на нашем веб-сайте вместе с новым текстом политики конфиденциальности.</p>
<p>ДТОО "Институт космической техники и технологий", Almaty, Kazakhstan</p>
</div>
</body>
</html>

View File

@ -0,0 +1,673 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="./resources/favicon.ico" />
<title>Caucasus and Central Asia Locusts Management system (CCALM)</title>
<meta name="robots" content="noindex">
<meta name="description" content="According to the implementation of the Road Map program to improve national and regional locust control in the Caucasus and Central Asia (CCA) developed a system of monitoring and analysis designed to control locusts in the CCA using a geographic information system and remote sensing technology">
<meta name="yandex-verification" content="2cb5374be0668fe9" />
<script type="text/javascript" src="./resources/metadata/jquery.js"></script>
<script type="text/javascript" src="./translation?v=7"></script>
<script src="./resources/metadata/dbms/tools.js?v=9"></script>
<link rel="stylesheet" href="./resources/engine/buttons.css?v=7">
<link rel="stylesheet" href="./resources/engine/normalize.css?v=7">
<link rel="stylesheet" href="./resources/metadata/dbms/dbms.css?v=7"/>
<link rel="stylesheet" href="./resources/engine/index.css?v=7">
<script type="text/javascript" src="./resources/engine/popup.js?v=03"></script>
<script type="text/javascript" src="./resources/index.js?v=02"></script>
<link rel="stylesheet" href="./resources/engine/openlayers/ol.css" type="text/css">
<link rel="stylesheet" href="./resources/engine/openlayers/ol-ext.css" />
<script src="./resources/engine/openlayers/ol.js"></script>
<script src="./resources/engine/openlayers/proj4.js"></script>
<script src="./resources/engine/openlayers/ol-ext.js"></script>
<style type="text/css">
html,body
{
height:100%;
min-height:100%;
margin:0px;
padding:0px;
text-align:center;
background-color: #f0f0f0;
}
h2{
font-size: 24px;
margin-block-start: 0.10em;
margin-block-end: 0.10em;
margin-bottom: 5px;
}
h3{
font-size: 20px;
margin-block-start: 0.10em;
margin-block-end: 0.10em;
margin-bottom: 5px;
}
table {
font-weight: inherit;
}
p{
text-indent: 25px;
text-align: justify;
margin-top: 5px;
}
.content
{
max-width:980px;
/*height:100%;*/
/*min-height:100%;*/
margin:0 auto;
text-align:left;
/*background-color: #ffffff;*/
}
.app {
display: grid;
grid-column-gap: 15px;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.ol-scale-line {
left: 50%;
transform: translate(-50%, 0);
-ms-transform: translate(-50%, 0)
}
.ol-full-screen{
left: .5em;
bottom: .5em;
right:inherit;
top:inherit
}
.ol-legend > div.ol-legend {
position: relative;
left: 50%;
}
</style>
<script type="text/javascript">
var date_start=getParam('date_start',window);
var date_end=getParam('date_end',window);
if(date_start=='') date_start=(Date.now()/1000)-2592000;
if(date_end=='') date_end=Date.now()/1000;
function setCookie (name, value, expires, path, domain, secure)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + expires);
expires=exdate.toUTCString()
document.cookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
if(window.location.host.indexOf('locust.kz')>=0){
window.location.href = "https://ccalm.org";
}
if(window.location.host.indexOf('ccalm.org')>=0 && location.protocol == 'http:'){
location.href = location.href.replace(/^http:/, 'https:')
}
var g_lng = "${m_locale}";
var g_map=null;
var m_winPP=null;
function Configure(){
let win=new TWin(false,'./resources');
win.BuildGUI(pageX-100,pageY-100);
win.setSize(300,20);
win.setCaption(trt('Configure'));
//win.showProgressBar();
win.shadow = true;
let html='<table width="100%" border="0"><tbody><tr><td style="padding: 1px; white-space: nowrap;" width="1%">From date </td><td style="padding: 1px;"><table style="width: 100%; table-layout: fixed; border-spacing: 0px; border-collapse: collapse;" border="0"><tbody><tr><td style="width: 100%;"><input style="width: 100%;" name="date_start" value="" id="filter_first_date_start" type="text"></td><td style="width: 25px;"><img id="filter_first_date_start_trigger" src="../resources/engine/images/datepicker.jpg" style="margin-left: 1px; cursor: pointer;"></td></tr></tbody></table></td><td style="padding: 1px; white-space: nowrap;" width="1%">To date</td><td style="padding: 1px;"><table style="width: 100%; table-layout: fixed; border-spacing: 0px; border-collapse: collapse;" border="0"><tbody><tr><td style="width: 100%;"><input style="width: 100%;" name="date_end" value="" id="filter_first_date_end" type="text"></td><td style="width: 25px;"><img id="filter_first_date_end_trigger" src="../resources/engine/images/datepicker.jpg" style="cursor: pointer; margin-left: 1px;"></td></tr></tbody></table></td></tr></tbody></table>';
html+='<input class="button-secondary" id="btnApply" type="button" value="'+trt('Apply')+'" style="margin: 0px 1px 0px 0px;float:right;">';
win.setContent(html);
win.setCenter();
win.hide(false);
$("#btnApply").click(function() {
let date_start="";
let input = document.getElementById('filter_first_date_start');
if(input!=null)
{
let date = new Date(input.value.replace(/-/g, "/"));
date_start=date.getTime()/1000;// - date.getTimezoneOffset()*60;
if(isNaN(date_start)) date_start='';
}
let date_end="";
input = document.getElementById('filter_first_date_end');
if(input!=null)
{
let date = new Date(input.value.replace(/-/g, "/"));
date_end=date.getTime()/1000;// - date.getTimezoneOffset()*60;
if(isNaN(date_end)) date_end='';
}
let path="./?date_start="+date_start+"&date_end="+date_end;
window.open(path, "_self");
});
}
</script>
</head>
<body>
<div style="background-color: #2694bb;">
<div class="content" style="color: #ffffff; font-size: 16px; padding-top: 15px;padding-bottom: 15px;position: relative;">
<img id="idLogo_ru" src="./resources/images/logo_en.svg" alt="" style="height:60px;cursor:pointer;display: none;" onclick="window.open('https://www.fao.org/locusts-cca/ru/', '_blank');">
<img id="idLogo_en" src="./resources/images/logo_en.svg" alt="" style="height:60px;cursor:pointer;display:none;" onclick="window.open('https://www.fao.org/locusts-cca/en/', '_blank');">
<div style="display: inline-block; position:absolute; top:5px; right: 5px;">
<a href="./?lng=3" style="color:#ffffff;text-decoration:none;margin-right:15px;font-weight: bold;">English</a> <a href="./?lng=1" style="color:#ffffff;text-decoration:none;font-weight: bold;">Русский</a>
</div>
</div>
</div>
<div style="background-color: #37390d; background-image: url('./resources/images/head.jpg'); background-repeat: no-repeat; background-position: center; height: 400; align-items: center;">
<div class="content" style="height:100%; color: #ffffff; font-size: 34px; display: flex; align-items: center; justify-content: center; position: relative;">
<div style="width: 100%;">
<div>${Caucasus_and_Central_Asia_Locusts_Management_system} (CCALM)</div>
<div id="idInitiative_en" style="font-size: 14px; font-style: italic; display: none;">An Initiative of the Food and Agriculture Organization of the United Nations</div>
<div id="idInitiative_ru" style="font-size: 14px; font-style: italic; display: none;">По инициативе Продовольственной и сельскохозяйственной организации Объединенных Наций</div>
<script>
if(g_lng=="1")
{
document.getElementById("idLogo_ru").style.display="block";
document.getElementById("idInitiative_ru").style.display="block";
}else{
document.getElementById("idLogo_en").style.display="block";
document.getElementById("idInitiative_en").style.display="block";
}
</script>
</div>
<table style="color: #ffffff; position: absolute; bottom: 8px; right: 8px; padding: 0px;">
<tr>
<td style="text-align: center;">ASDC</td>
<td style="width: 15px;"></td>
<td style="text-align: center;">CCALM</td>
</tr>
<tr>
<td style="text-align: center;"><a target="_blank" href="https://play.google.com/store/apps/details?id=kz.istt.locust"><img src="./resources/images/google_android_download.png" style="width: 64px; height: 64px"></a></td>
<td style="width: 15px;"></td>
<td style="text-align: center;"><a href="#" onclick="window.open('./engine/'); return false;"><img src="./resources/images/flex.png" style="width: 64px; height: 64px"></a></td>
</tr>
</table>
</div>
</div>
<div style="background-color: #2694bb;">
<div id="idSituation_en" class="content" style="display:none;color: #ffffff; font-size: 16px; padding-top: 15px;padding-bottom: 15px;">
<h2>Hazard levels as June 2023</h2>
<div style="background-color: #ff0000;color:#000000;">Situation level: DANGER in Afghanistan and Tajikistan (DMA)</div>
<div style="background-color: #ffff99;color:#000000;">Situation level: CAUTION in Turkmenistan (DMA), Azerbaijan, Georgia, Kazakhstan, Kyrgyzstan and Uzbekistan (DMA and CIT), Russian Federation (DMA, CIT and LMI), Tajikistan (CIT)</div>
<div style="background-color: #ccffcc;color:#000000;">Situation level: CALM elsewhere or for the other locust pests</div>
</div>
<div id="idSituation_ru" class="content" style="display:none;color: #ffffff; font-size: 16px; padding-top: 15px;padding-bottom: 15px;">
<h2>Уровни опасности июнь 2023г.</h2>
<div style="background-color: #ff0000;color:#000000;">Ситуация: ОПАСНАЯ в Афганистане и Таджикистане </div>
<div style="background-color: #ffff99;color:#000000;">Ситуация: ВНИМАНИЕ в Туркменистане (DMA), Азербайджане, Грузии, Казахстане, Кыргызстане и Узбекистане (DMA и CIT), Российской Федерации (DMA, CIT и LMI), Таджикистане (CIT)</div>
<div style="background-color: #ccffcc;color:#000000;">Ситуация: СПОКОЙНАЯ в других странах и для других видов саранчовых вредителей</div>
</div>
</div>
<script>
if(g_lng=="1")
{
document.getElementById("idSituation_ru").style.display="block";
}else{
document.getElementById("idSituation_en").style.display="block";
}
</script>
<div style="background-color: #2694bb;">
<div class="content" style="color: #ffffff; font-size: 24px; padding-top: 15px;padding-bottom: 15px;">
<div>
<div style="display: inline-block;">
<h2 style="display: inline-block;">${Locust_Data} ${with} <span id="fromdate">___</span> ${to} <span id="todate">___</span></h2>
</div>
<div style="display: inline-block;float: right;">
<img src="./resources/images/config.svg" alt="" style="height:30px;cursor:pointer;" alt="${Configure}" title="${Configure}" onclick="Configure();">
</div>
</div>
<script>
document.getElementById("fromdate").innerHTML = (new Date(date_start * 1000)).toDateString();
document.getElementById("todate").innerHTML = (new Date(date_end * 1000)).toDateString();
</script>
<!--div id="mapdiv" style="color: #000000; font-size: 16px; background-color: Gray; width:100%; height:600px;"></div-->
<div id="cnt_mapdiv" style="width:100%; height:600px; background-color: Gray; overflow: hidden; position: relative;">
<div id="mapdiv" style="position: absolute; color: #000000; font-size: 16px; background-color: Gray; width:100%; height:100%;"></div>
<div style="font-weight: bold; color: #000000; position: absolute; background-color: #ffffff; opacity: 0.7; right: .5em; top: .5em; left:inherit; bottom:inherit">
<table style="margin: 5px;">
<!--tr><td><img src="./resources/images/stai.svg" alt="" height="16px" width="16px"/></td><td>${Swarms}</td></tr-->
<tr><td><img src="./resources/images/imago.svg" alt="" height="16px" width="16px"/></td><td>${Adult}</td></tr>
<tr><td><img src="./resources/images/lichinki.svg" alt="" height="16px" width="16px"/></td><td>${Hoppers}</td></tr><!--tr><td><img src="./resources/images/kuligi.svg" alt="" height="16px" width="16px"/></td><td>${Bands}</td></tr-->
<tr><td><img src="./resources/images/eggs.svg" alt="" height="16px" width="16px"/></td><td>${Egg_pod}</td></tr>
<tr><td><img src="./resources/images/spraying.svg" alt="" height="16px" width="16px"/></td><td>${Spraying}</td></tr>
<tr><td><img src="./resources/images/point.svg" alt="" height="16px" width="16px"/></td><td>${Not_infected}</td></tr>
</table>
</div>
</div>
</div>
</div>
<script>
// Style function
function getFeatureStyle (feature) {
var st= [];
// Shadow style
st.push (new ol.style.Style ({
image: new ol.style.Shadow ({
radius: 15
})
}));
var st1= [];
// Font style
st.push ( new ol.style.Style ({
image: new ol.style.FontSymbol({
form: "marker",
glyph: 'fa-car',
radius: 15,
offsetY: -15,
fontSize: .7,
color: '#fff',
fill: new ol.style.Fill ({
color: 'blue'
}),
stroke: new ol.style.Stroke ({
color: '#fff',
width: 2
})
}),
stroke: new ol.style.Stroke ({
width: 5,
color: '#f00'
}),
fill: new ol.style.Fill ({
color: [255, 0, 0, 0.6]
})
}));
return st;
}
var g_Layouts = new Object();
g_Layouts["OpenStreetMap"] = new ol.source.XYZ({
url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png'
,attributions: [
'© OpenStreetMap',
'<a href="https://www.openstreetmap.org/copyright">Terms of Use.</a>'
]
});
var g_Tile = new ol.layer.Tile({source:g_Layouts["OpenStreetMap"]});
var g_vectorSource = new ol.source.Vector({});
var g_vectorLayer = new ol.layer.Vector({source: g_vectorSource,zIndex: 100});
g_map = new ol.Map({
interactions: ol.interaction.defaults({ doubleClickZoom:false, mouseWheelZoom:false }),
target: 'mapdiv',
controls: ol.control.defaults().extend([
new ol.control.ScaleLine(),
new ol.control.ZoomSlider(),
new ol.control.FullScreen()
]),
/*controls: ol.control.defaults({ attribution: false }).extend([attribution]),*/
layers: [
g_Tile,
g_vectorLayer,
],
view: new ol.View({
center: ol.proj.fromLonLat([55 ,45]),
zoom: 4
})
});
// Change mouse cursor when over marker
g_map.on('pointermove', function(evt)
{
let elm=g_map.getTargetElement();
if(elm!=null)
{
var feature = g_map.forEachFeatureAtPixel(evt.pixel,function(feature) {return feature;});
if (feature)
elm.style.cursor = 'pointer';
else
elm.style.cursor = '';
}
});
// display popup on click
g_map.on('click', function(evt){
let coordinate = evt.coordinate;
//var hdms = ol.coordinate.toStringHDMS(ol.proj.transform( coordinate, 'EPSG:3857', 'EPSG:4326'));
//$(element).popover('destroy');
//popup.setPosition(coordinate);
//$(popup.getElement()).show();
var feature = g_map.forEachFeatureAtPixel(evt.pixel,function(feature) {return feature;});
if(feature)
{
if(feature.userType==4)
{
if(m_winPP!=null) m_winPP.Close();
m_winPP=new TWin(false,'./resources');
m_winPP.BuildGUI(pageX-100,pageY-100);
m_winPP.setSize(640,200);
m_winPP.setCaption(trt("Spray_monitoring") + ' "' + feature.userName + '".');
m_winPP.setCenter();
callFrmLocustDelDataPopupInterface(feature.userID);
}else
{
if(m_winPP!=null) m_winPP.Close();
m_winPP=new TWin(false,'./resources');
m_winPP.BuildGUI(pageX-100,pageY-100);
m_winPP.setSize(640,200);
m_winPP.setCaption(trt("Locust_survey") + ' "' + feature.userName + '".');
m_winPP.setCenter();
callFrmLocustDataPopupInterface(feature.userID);
}
/*if(feature.userData !== undefined && (feature.userData.type=="Product2" || feature.userData.type=="Product3" || feature.userData.type=="Product2r" || feature.userData.type=="Product3r"))
{
if(feature.userData.percent!='')
new TChartFRMLocustInfo(feature.userData);
else
alert(trt('No_data')+'!');
}
if(feature.userData.type=="Product4" || feature.userData.type=="Product4r")
{
if(feature.userData.percent!='')
{
var win = new TWin(false,'./resources');
win.BuildGUI(pageX,pageY);
win.setCaption(trt('Data'));
win.setSize("220px","100px");
win.setCenter();
win.setContent(feature.userData.text);
win.hide(false);
}else
alert(trt('No_data')+'!');
}*/
}
});
/*
// Vector layer
var vector = new ol.layer.Vector({
source: new ol.source.Vector(),
style: getFeatureStyle
})
g_map.addLayer(vector);
f0 = new ol.Feature(new ol.geom.Point( [269914, 6248592]));
vector.getSource().addFeature(f0);
// Define a new legend
var legend = new ol.control.Legend({
title: 'Legend',
style: getFeatureStyle,
collapsed: false
});
g_map.addControl(legend);
legend.on('select', function(e) {
if (e.index >= 0) log.info('You click on row: '+e.title+' ('+e.index+')');
else log.info('You click on the title: '+e.title);
});
legend.addRow({ title: 'Car placemark', feature: f0 });
*/
//select id,locust_populated,ST_SetSRID(ST_MakePoint(lon1, lat1),4326) from main.frmlocust where del=false and locust_populated>0 and date>'2022-01-01'
callDataIndex(date_start,date_end);
</script>
<div style="background-color: #ffffff;">
<div id="idBulletin_en" class="content" style="display:none;color:#000000;font-size:24px;padding-top: 15px;padding-bottom: 15px;">
<h2>Regional monthly bulletins on locusts</h2>
<div style="cursor: pointer;" onclick="window.open('https://www.fao.org/locusts-cca/current-situation/en/', '_blank');">
<img src="./resources/images/byulleten.jpg" alt="Byulleten" style="width: 100px; float: left; box-shadow: 0 0 5px rgba(0,0,0,0.5);margin: 10px;">
<div style="color: #0d6cac;">No. 89 June, 2023</div>
<strong>General Situation during May 2023 Forecast for June 2023</strong>
<p>Moroccan Locust (DMA) fledging, mating and egglaying started in most areas of Central Asia (CA), with swarm flights, including across borders, reported in southern parts. The situation was critical in Afghanistan and Tajikistan in...</p>
<div style="text-align: right;"><a href="https://www.fao.org/locusts-cca/current-situation/en/" target="_blank">${Data_source} >>></a></div>
</div>
</div>
<div id="idBulletin_ru" class="content" style="display:none;color:#000000;font-size:24px;padding-top: 15px;padding-bottom: 15px;">
<h2>Региональные ежемесячные бюллетени по саранче</h2>
<div style="cursor: pointer;" onclick="window.open('https://www.fao.org/locusts-cca/bulletins/ru/', '_blank');">
<img src="./resources/images/byulleten.jpg" alt="Byulleten" style="width: 100px; float: left; box-shadow: 0 0 5px rgba(0,0,0,0.5);margin: 10px;">
<div style="color: #0d6cac;">№ 89 июнь 2023 г.</div>
<strong>Общая ситуация в мае 2023 г. Прогноз на июнь 2023 г.</strong>
<p>Окрыление, спаривание и яйцекладка мароккской саранчи (DMA) начались в большинстве районов Центральной Азии (ЦА), перелеты стай, в...</p>
<div style="text-align: right;"><a href="https://www.fao.org/locusts-cca/bulletins/ru/" target="_blank">${Data_source} >>></a></div>
</div>
</div>
</div>
<script>
if(g_lng=="1")
{
document.getElementById("idBulletin_ru").style.display="block";
}else{
document.getElementById("idBulletin_en").style.display="block";
}
</script>
<div style="background-color: #dedcdc;">
<div class="content" style="color: #000000; font-size: 24px; padding-top: 15px;padding-bottom: 15px;">
<h2>${ASDC_Field_Data}</h2>
<div class="app" style="font-size: 14px;text-align: center;">
<div style="cursor:pointer; height: 200px; margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpSurvey();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/swarms400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff;width:100%;height:50px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);">${Locust_survey}</div></div>
</div>
<div style="cursor:pointer; height: 200px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpSpray();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/shell400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff;width:100%;height:50px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);">${Spray_monitoring}</div></div>
</div>
<div style="cursor:pointer; height: 200px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpSafety();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/environment400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff;width:100%;height:50px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);">${Safety_and_environment}</div></div>
</div>
</div>
</div>
</div>
<div style="background-color: #dedcdc;">
<div class="content" style="color: #000000; font-size: 24px; padding-top: 15px;padding-bottom: 15px;">
<h2>${CALM_and_other_data}</h2>
<div class="app" style="font-size: 14px;text-align: center;">
<div style="cursor:pointer; height: 210px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpSoil();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/soil400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff; width: 100%; height: 60px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width:100%;">${Soil_temperature_at_a_depth_of_10_cm}</div></div>
</div>
<div style="cursor:pointer; height: 210px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpAir();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/air400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff; width: 100%; height: 60px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width:100%;">${Air_temperature_2m_above_the_ground}</div></div>
</div>
<div style="cursor:pointer; height: 210px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpPre();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/precipitation400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff; width: 100%; height: 60px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width:100%;">${Accumulated_precipitation_in_24_hours}</div></div>
</div>
<div style="cursor:pointer; height: 210px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpSel();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/sel400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff; width: 100%; height: 60px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width:100%;">${Hydrothermal_coefficient_of_Selyaninov}</div></div>
</div>
<div style="cursor:pointer; height: 210px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpNDVI();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/ndvi400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff; width: 100%; height: 60px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width:100%;"><strong>NDVI</strong> ${Normalized_difference_vegetation_index}</div></div>
</div>
<div style="cursor:pointer; height: 210px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpIVI();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/ivi400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff; width: 100%; height: 60px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width:100%;"><strong>IVI</strong> ${Integral_vegetation_index}</div></div>
</div>
<div style="cursor:pointer; height: 210px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpNDWI();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/ndwi400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff; width: 100%; height: 60px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width:100%;"><strong>NDWI</strong> ${Normalized_difference_water_index}</div></div>
</div>
<div style="cursor:pointer; height: 210px; background-color: #ffffff;margin-top:5px;margin-bottom:5px;box-shadow: 0 0 10px rgba(0,0,0,0.5);border-radius: 10px;" onclick="showPopUpNDSI();">
<div style="border-radius: 10px 10px 0px 0px; background-color: #aaa9a9; background-image: url('./resources/images/ndsi400.jpg'); background-repeat: no-repeat; background-position: center; width: 100%; height: 150px;"></div>
<div style="border-radius: 0px 0px 10px 10px; background-color: #ffffff; width: 100%; height: 60px;position:relative;"><div style="position:absolute;top:50%;left:50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width:100%;"><strong>NDSI</strong> ${Normalised_difference_snow_index}</div></div>
</div>
</div>
</div>
</div>
<!--div style="background-color: #ffffff;">
<div id="idCCALM_en" class="content" style="display:none;color:#000000;font-size:24px;padding-top: 15px;padding-bottom: 15px; height: 350;">
<iframe style="float: right;" width="560" height="315" src="https://www.youtube.com/embed/5kdXRocsOkQ?controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div id="idCCALM_ru" class="content" style="display:none;color:#000000;font-size:24px;padding-top: 15px;padding-bottom: 15px; height: 350;">
<iframe style="float: right;" width="560" height="315" src="https://www.youtube.com/embed/qchZtE3atNA?controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</div-->
<script>
if(g_lng=="1")
{
//document.getElementById("idCCALM_ru").style.display="block";
}else{
//document.getElementById("idCCALM_en").style.display="block";
}
</script>
<div style="background-color: #2694bb;">
<div id="idMain_en" class="content" style="display:none; color: #ffffff; font-size: 24px; padding-top: 15px;padding-bottom: 15px;">
<p>A Locust Geographic Information System (GIS), entitled <strong>“Caucasus and Central Asia Locust Management system” (CCALM)</strong>, was developed to the benefit of the ten CCA countries participating in the FAO “Programme to improve national and regional locust management in Caucasus and Central Asia (CCA),” under Result 3 of its Roadmap “Locust issues and disasters better anticipated and mitigated” and more specifically Activity 3.3 “Develop monitoring and analyzing systems”. CCALM is filled using the Automated System for Data Collection (ASDC), satellite products and other sources. Its purpose is to improve data analysis as well as forecasting and reporting at the national and regional levels.</p>
<p>
<strong>The Automated System of Data Collection (ASDC)</strong>
<iframe style="float: right; border: 10px solid #2694bb;" width="460" height="260" src="https://www.youtube.com/embed/5kdXRocsOkQ?controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
was created in 2013 in order to facilitate collection and sharing of standardized locust data. It simulates the FAO standard “Locust Survey Form” and “Spray Monitoring Form” for CCA and serves as basic data for the locust GIS in CCA. After ASDC first testing by Georgia, Uzbekistan and Russia in 2014-2015, the system was endorsed by CCA countries (October 2015), finalized and made available in eleven languages (Armenian, Azeri, Dari, English, Georgian, Kazakh, Kyrgyz, Russian, Tajik, Turkmen and Uzbek) in 2016/2017 for use on tablets, smartphones and computers.
</p>
<p>CCALM basic functions (data import, query, display, output), i.e. the database and its management system, were developed by the Institute of Space Technique and Technologies (ISTT), Almaty, Kazakhstan, and launched in early 2016. Based on the technical specifications proposed by CCA Forecasting and FAO Experts, the advanced functions (summary, analysis and forecast algorithms) were developed by ISTT in line with the technical standards of FAO. They include a the set of output products for analyzing Italian (CIT), Moroccan (DMA) and Asian Migratory (LMI) locusts data and elaborating forecasts. Among them, there are maps of: (a) locust densities, (b) treated areas, (c) areas infested (or treated) with densities above the Economic Threshold (ET). CCALM is fully available since March 2017 in two languages, English and Russian, at ccalm.org.</p>
</div>
<div id="idMain_ru" class="content" style="display:none; color: #ffffff; font-size: 24px; padding-top: 15px;padding-bottom: 15px;">
<p>Географическая Информационная Система (ГИС) по Саранчовым, озаглавленная как <strong>«Система управления саранчовыми на Кавказе и в Центральной Азии” (CCALM - Caucasus and Central Asia Locust Management system)</strong>, разрабатывается в интересах десяти стран КЦА, участвующих в программе ФАО по улучшению национальной и региональной борьбы с саранчой на Кавказе и в Центральной Азии (КЦА) по Результату 3 Дорожной карты реализации “Саранчовые вспышки лучше прогнозируются и их катастрофичность снижается" и, более конкретно, Мероприятию 3.3 “Разработать мониторинговые и анализирующие системы”. База данных CCALM наполняется при помощи Автоматизированной системы сбора данных (ASDC) и других источников спутниковой продукции. Ее цель - улучшить анализ данных, а также прогнозирование и отчетность на национальном и региональном уровнях.</p>
<p>
<strong>Автоматизированная Система Сбора Данных (ASDC Automated System for Data Collection)</strong>
<iframe style="float: right; border: 10px solid #2694bb;" width="460" height="260" src="https://www.youtube.com/embed/qchZtE3atNA?controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
была создана в 2013 году для облегчения сбора и совместного использования стандартизированных данных по саранчовым. Она имитирует стандартные формы ФАО для обследования угодий на заселенность и по борьбе с саранчой и служит основой создаваемой ГИС по Саранчовым в КЦА. После тестирования ASDC Грузией, Российской Федерацией и Узбекистаном в 2014-2015 гг., система была одобрена странами КЦА (октябрь 2015 г.), ее создание было завершено, и она стала доступна на одиннадцати языках (азербайджанском, английском, армянском, дари, грузинском, казахском, киргизском, русском, таджикском, туркменском и узбекском) в 2016-2017 гг. для использования на планшетах, смартфонах и компьютерах.
</p>
<p>CCALM основные функции (импорт данных, запрос, отображение, вывод), т.е. база данных и система управления базой данных были разработаны Институтом космической техники и технологий (ИКТТ), г. Алматы, Казахстан, и запущены в начале 2016 г. На основе технических спецификаций, разработанных и согласованных с экспертами КЦА по прогнозированию совместно с экспертами ФАО, расширенные функции (сводка, анализ, алгоритмы прогноза) были разработаны ИКТТ в соответствии с техническими стандартами ФАО. Они включают ряд выходных продуктов, предназначенных для анализа данных по итальянскому прусу (CIT), мароккской саранче (DMA) и азиатской перелетной саранче (LMI) и подготовки прогнозов. Среди них есть карты: (a) плотности саранчовых, (b) обработанных территорий, (c) территорий, заселенных (или обработанных) с плотностью выше экономического порога вредоносности (ЭПВ). CCALM полностью доступен с марта 2017 года на двух языках, английском и русском, по адресу ccalm.org.</p>
</div>
</div>
<script>
if(g_lng=="1")
{
document.getElementById("idMain_ru").style.display="block";
}else{
document.getElementById("idMain_en").style.display="block";
}
</script>
<div style="background-color: #dedcdc;">
<div class="content" style="color: #000000; font-size: 24px; padding-top: 15px;padding-bottom: 15px;">
<table style="width: 100%;">
<tr>
<td style="text-align: center;">
<h3>${ASDC_User_Guides}</h3>
<a href="./resources/engine/help/ASDC_for_Android_ENG.pdf" target="_blank">ASDC_for_Android_ENG_v2.23.pdf</a><br/>
<a href="./resources/engine/help/ASDC_for_Android_RUS.pdf" target="_blank">ASDC_for_Android_RUS_v2.23.pdf</a>
</td>
<td style="text-align: center;">
<h3>${CCALM_User_Guides}</h3>
<a href="./resources/engine/help/CCALM_help_ENG.pdf" target="_blank">CCALM_help_ENG_v3.3.pdf</a><br/>
<a href="./resources/engine/help/CCALM_help_RUS.pdf" target="_blank">CCALM_help_RUS_v3.4.pdf</a>
</td>
</tr>
</table>
</div>
</div>
<!--div id="idAppeal_ru" style="background-color: #ffffff; display: none;">
<div class="content" style="color: #000000; font-size: 24px; padding-top: 15px;padding-bottom: 15px;">
<h2>Призыв ФАО к быстрому реагированию</h2>
<p>Пустынная саранча представляет собой беспрецедентный риск для продовольственной безопасности и экономической ситуации. За последние несколько лет последовавшие друг за другом потрясения - в том числе засуха, наводнения, макроэкономические кризисы и вооруженные конфликты - способствовали значительному уровню дестабилизации. Необходимо приложить все усилия, чтобы нынешний всплеск не превратился в полноценное бедствие.</p>
<div style="text-align: right;"><a href="mailto:AGP-Director@fao.org?Subject=Donation%20for%20the%20Desert%20Locust%20Crisis" style="background-color: #B22222; color:white;padding: 10px;box-shadow: 0 0 5px rgba(0,0,0,0.5);">${Donate_Now}</a></div>
<br>
</div>
</div>
<div id="idAppeal_en" style="background-color: #ffffff; display: none;">
<div class="content" style="color: #000000; font-size: 24px; padding-top: 15px;padding-bottom: 15px;">
<h2>FAO's Appeal for Rapid Response</h2>
<p>The Desert Locust poses an unprecedented risk to food security and economic conditions. Over the past several years, successive shocks - including droughts, floods, macroeconomic crises and armed conflicts - have contributed to significant levels of destabilization. Every effort must be made to ensure that the current surge does not turn into a full-fledged disaster.</p>
<div style="text-align: right;"><a href="mailto:AGP-Director@fao.org?Subject=Donation%20for%20the%20Desert%20Locust%20Crisis" style="background-color: #B22222; color:white;padding: 10px;box-shadow: 0 0 5px rgba(0,0,0,0.5);">${Donate_Now}</a></div>
<br>
</div>
</div-->
<script>
/*
if(g_lng=="1")
{
document.getElementById("idAppeal_ru").style.display="block";
}else{
document.getElementById("idAppeal_en").style.display="block";
}
*/
</script>
<div style="background-color: #2694bb;">
<div id="idContact_en" class="content" style="display:none;color:#ffffff;font-size:16px;padding-top:15px;padding-bottom: 15px; text-align: center;">
For any questions, please contact us by email: <a href="mailto:info@ccalm.org" style="color: #fafaff;">info@ccalm.org</a>.
</div>
<div id="idContact_ru" class="content" style="display:none;color:#ffffff;font-size:16px; padding-top:15px;padding-bottom: 15px; text-align: center;">
По всем вопросам обращайтесь к нам по электронной почте: <a href="mailto:info@ccalm.org" style="color: #fafaff;">info@ccalm.org</a>.
</div>
</div>
<script>
if(g_lng=="1")
{
document.getElementById("idContact_ru").style.display="block";
}else{
document.getElementById("idContact_en").style.display="block";
}
</script>
</body>
</html>

View File

@ -0,0 +1,33 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" contentType="text/javascript; charset=UTF-8" pageEncoding="UTF-8" %>
//В tools.js функция trt(key) есть
function _(key)
{
if(key==null || key===undefined) return '';
let val=g_translations[key];
if(val==null || val===undefined)
{
for(let item in g_translations) {
if(item.toLowerCase()==key.toLowerCase())
{
val=g_translations[item];
break;
}
}
}
if(val==null || val===undefined) return key.replace(/_/g, ' ');
else return val;
}
function __(key)
{
var val=g_translations[key];
if(val===undefined) return key.replace(/_/g, ' ');
else return val;
}
var g_translations = {
'':''
${keys}
};

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee" version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

View File

@ -0,0 +1,326 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis version="3.6.0-Noosa" projectname="">
<homePath path=""/>
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<trust active="0"/>
<projectCrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</projectCrs>
<layer-tree-group>
<customproperties/>
<layer-tree-layer name="IVI" id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b" source="contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=IVI:${year}IVI_h20v03&amp;layers=IVI:${year}IVI_h20v04&amp;layers=IVI:${year}IVI_h21v03&amp;layers=IVI:${year}IVI_h21v04&amp;layers=IVI:${year}IVI_h21v05&amp;layers=IVI:${year}IVI_h22v03&amp;layers=IVI:${year}IVI_h22v04&amp;layers=IVI:${year}IVI_h22v05&amp;layers=IVI:${year}IVI_h23v03&amp;layers=IVI:${year}IVI_h23v04&amp;layers=IVI:${year}IVI_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms" expanded="0" checked="Qt::Checked" providerKey="wms">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer name="OpenStreetMap" id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416" source="crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png" expanded="1" checked="Qt::Checked" providerKey="wms">
<customproperties/>
</layer-tree-layer>
<custom-order enabled="0">
<item>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</item>
<item>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</item>
</custom-order>
</layer-tree-group>
<snapping-settings mode="2" unit="1" type="1" enabled="0" intersection-snapping="0" tolerance="12">
<individual-layer-settings/>
</snapping-settings>
<relations/>
<mapcanvas name="theMapCanvas" annotationsVisible="1">
<units>meters</units>
<extent>
<xmin>2465883.50908621679991484</xmin>
<ymin>264579.77565301861613989</ymin>
<xmax>12985575.38905057311058044</xmax>
<ymax>10784271.65561737865209579</ymax>
</extent>
<rotation>0</rotation>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<expressionContextScope/>
</mapcanvas>
<projectModels/>
<legend updateDrawingOrder="true">
<legendlayer name="IVI" drawingOrder="-1" checked="Qt::Checked" showFeatureCount="0" open="false">
<filegroup open="false" hidden="false">
<legendlayerfile layerid="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b" visible="1" isInOverview="0"/>
</filegroup>
</legendlayer>
<legendlayer name="OpenStreetMap" drawingOrder="-1" checked="Qt::Checked" showFeatureCount="0" open="true">
<filegroup open="true" hidden="false">
<legendlayerfile layerid="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416" visible="1" isInOverview="0"/>
</filegroup>
</legendlayer>
</legend>
<mapViewDocks/>
<mapViewDocks3D/>
<projectlayers>
<maplayer type="raster" refreshOnNotifyEnabled="0" autoRefreshEnabled="0" hasScaleBasedVisibilityFlag="0" refreshOnNotifyMessage="" autoRefreshTime="0" minScale="1e+08" maxScale="0" styleCategories="AllStyleCategories">
<extent>
<xmin>-20037508.34278924390673637</xmin>
<ymin>-20037508.34278925508260727</ymin>
<xmax>20037508.34278924390673637</xmax>
<ymax>20037508.34278924390673637</ymax>
</extent>
<id>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</id>
<datasource>crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>OpenStreetMap</layername>
<srs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="identify/format" value="Undefined"/>
<property key="ol_layer_type" value="OpenStreetMap"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast brightness="0" contrast="0"/>
<huesaturation colorizeStrength="100" grayscaleMode="0" colorizeGreen="128" colorizeBlue="128" colorizeOn="0" saturation="0" colorizeRed="255"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
<maplayer type="raster" refreshOnNotifyEnabled="0" autoRefreshEnabled="0" hasScaleBasedVisibilityFlag="0" refreshOnNotifyMessage="" autoRefreshTime="0" minScale="1e+08" maxScale="0" styleCategories="AllStyleCategories">
<extent>
<xmin>2906345.494111736305058</xmin>
<ymin>3503584.68813749961555004</ymin>
<xmax>13358323.19605071656405926</xmax>
<ymax>8399737.88861873932182789</ymax>
</extent>
<id>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</id>
<datasource>contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=IVI:${year}IVI_h20v03&amp;layers=IVI:${year}IVI_h20v04&amp;layers=IVI:${year}IVI_h21v03&amp;layers=IVI:${year}IVI_h21v04&amp;layers=IVI:${year}IVI_h21v05&amp;layers=IVI:${year}IVI_h22v03&amp;layers=IVI:${year}IVI_h22v04&amp;layers=IVI:${year}IVI_h22v05&amp;layers=IVI:${year}IVI_h23v03&amp;layers=IVI:${year}IVI_h23v04&amp;layers=IVI:${year}IVI_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>${year}IVI</layername>
<srs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<contact>
<name></name>
<organization></organization>
<position></position>
<voice></voice>
<fax></fax>
<email></email>
<role></role>
</contact>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent>
<spatial minx="0" dimensions="2" minz="0" maxz="0" maxy="0" crs="" miny="0" maxx="0"/>
<temporal>
<period>
<start></start>
<end></end>
</period>
</temporal>
</extent>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="WMSBackgroundLayer" value="false"/>
<property key="WMSPublishDataSourceUrl" value="false"/>
<property key="embeddedWidgets/count" value="0"/>
<property key="identify/format" value="Html"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast brightness="0" contrast="0"/>
<huesaturation colorizeStrength="100" grayscaleMode="0" colorizeGreen="128" colorizeBlue="128" colorizeOn="0" saturation="0" colorizeRed="255"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
</projectlayers>
<layerorder>
<layer id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416"/>
<layer id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b"/>
</layerorder>
<properties>
<PositionPrecision>
<Automatic type="bool">true</Automatic>
<DecimalPlaces type="int">2</DecimalPlaces>
</PositionPrecision>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<Measure>
<Ellipsoid type="QString">WGS84</Ellipsoid>
</Measure>
<Gui>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
</Gui>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
<PAL>
<DrawOutlineLabels type="bool">true</DrawOutlineLabels>
<DrawRectOnly type="bool">false</DrawRectOnly>
<TextFormat type="int">0</TextFormat>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<CandidatesPoint type="int">16</CandidatesPoint>
<CandidatesLine type="int">50</CandidatesLine>
<SearchMethod type="int">0</SearchMethod>
<ShowingAllLabels type="bool">false</ShowingAllLabels>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<ShowingCandidates type="bool">false</ShowingCandidates>
</PAL>
<SpatialRefSys>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<Measurement>
<AreaUnits type="QString">m2</AreaUnits>
<DistanceUnits type="QString">meters</DistanceUnits>
</Measurement>
</properties>
<visibility-presets/>
<transformContext/>
<projectMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<author><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.</author>
<creation>2019-06-10T14:55:55</creation>
</projectMetadata>
<Annotations/>
<Layouts/>
</qgis>

View File

@ -0,0 +1,354 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" saveUser="ivanov.i" version="3.12.3-București" saveUserFull="Иванов И.">
<homePath path=""/>
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<trust active="0"/>
<projectCrs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</projectCrs>
<layer-tree-group>
<customproperties/>
<layer-tree-layer checked="Qt::Checked" providerKey="wms" expanded="1" source="contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=NDSI:${day}NDSI_h20v03&amp;layers=NDSI:${day}NDSI_h20v04&amp;layers=NDSI:${day}NDSI_h21v03&amp;layers=NDSI:${day}NDSI_h21v04&amp;layers=NDSI:${day}NDSI_h21v05&amp;layers=NDSI:${day}NDSI_h22v03&amp;layers=NDSI:${day}NDSI_h22v04&amp;layers=NDSI:${day}NDSI_h22v05&amp;layers=NDSI:${day}NDSI_h23v03&amp;layers=NDSI:${day}NDSI_h23v04&amp;layers=NDSI:${day}NDSI_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms" legend_exp="" id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b" name="NDSI">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer checked="Qt::Checked" providerKey="wms" expanded="1" source="crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png" legend_exp="" id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416" name="OpenStreetMap">
<customproperties/>
</layer-tree-layer>
<custom-order enabled="0">
<item>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</item>
<item>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</item>
</custom-order>
</layer-tree-group>
<snapping-settings intersection-snapping="0" enabled="0" type="1" mode="2" tolerance="12" unit="1">
<individual-layer-settings/>
</snapping-settings>
<relations/>
<mapcanvas annotationsVisible="1" name="theMapCanvas">
<units>meters</units>
<extent>
<xmin>3863030.08689398271963</xmin>
<ymin>3270963.49336460698395967</ymin>
<xmax>9122876.02687616087496281</xmax>
<ymax>8530809.43334678560495377</ymax>
</extent>
<rotation>0</rotation>
<destinationsrs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<expressionContextScope/>
</mapcanvas>
<projectModels/>
<legend updateDrawingOrder="true">
<legendlayer checked="Qt::Checked" showFeatureCount="0" drawingOrder="-1" open="true" name="NDSI">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" visible="1" layerid="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b"/>
</filegroup>
</legendlayer>
<legendlayer checked="Qt::Checked" showFeatureCount="0" drawingOrder="-1" open="true" name="OpenStreetMap">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" visible="1" layerid="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416"/>
</filegroup>
</legendlayer>
</legend>
<mapViewDocks/>
<mapViewDocks3D/>
<projectlayers>
<maplayer styleCategories="AllStyleCategories" type="raster" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" minScale="1e+08" autoRefreshEnabled="0" maxScale="0" hasScaleBasedVisibilityFlag="0" autoRefreshTime="0">
<extent>
<xmin>-20037508.34278924390673637</xmin>
<ymin>-20037508.34278925508260727</ymin>
<xmax>20037508.34278924390673637</xmax>
<ymax>20037508.34278924390673637</ymax>
</extent>
<id>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</id>
<datasource>crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>OpenStreetMap</layername>
<srs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<wkt></wkt>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="identify/format" value="Undefined"/>
<property key="ol_layer_type" value="OpenStreetMap"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" nodataColor="" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast contrast="0" brightness="0"/>
<huesaturation colorizeRed="255" colorizeStrength="100" grayscaleMode="0" colorizeOn="0" colorizeBlue="128" colorizeGreen="128" saturation="0"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
<maplayer styleCategories="AllStyleCategories" type="raster" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" minScale="1e+08" autoRefreshEnabled="0" maxScale="0" hasScaleBasedVisibilityFlag="0" autoRefreshTime="0">
<extent>
<xmin>2906345.49411173490807414</xmin>
<ymin>3503584.68813749961555004</ymin>
<xmax>13358323.19605071656405926</xmax>
<ymax>8399737.88861873932182789</ymax>
</extent>
<id>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</id>
<datasource>contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=NDSI:${day}NDSI_h20v03&amp;layers=NDSI:${day}NDSI_h20v04&amp;layers=NDSI:${day}NDSI_h21v03&amp;layers=NDSI:${day}NDSI_h21v04&amp;layers=NDSI:${day}NDSI_h21v05&amp;layers=NDSI:${day}NDSI_h22v03&amp;layers=NDSI:${day}NDSI_h22v04&amp;layers=NDSI:${day}NDSI_h22v05&amp;layers=NDSI:${day}NDSI_h23v03&amp;layers=NDSI:${day}NDSI_h23v04&amp;layers=NDSI:${day}NDSI_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>${day}NDSI</layername>
<srs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<contact>
<name></name>
<organization></organization>
<position></position>
<voice></voice>
<fax></fax>
<email></email>
<role></role>
</contact>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<wkt></wkt>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</crs>
<extent>
<spatial minz="0" minx="0" miny="0" crs="" maxz="0" dimensions="2" maxy="0" maxx="0"/>
<temporal>
<period>
<start></start>
<end></end>
</period>
</temporal>
</extent>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="WMSBackgroundLayer" value="false"/>
<property key="WMSPublishDataSourceUrl" value="false"/>
<property key="embeddedWidgets/count" value="0"/>
<property key="identify/format" value="Html"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" nodataColor="" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast contrast="0" brightness="0"/>
<huesaturation colorizeRed="255" colorizeStrength="100" grayscaleMode="0" colorizeOn="0" colorizeBlue="128" colorizeGreen="128" saturation="0"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
</projectlayers>
<layerorder>
<layer id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416"/>
<layer id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b"/>
</layerorder>
<properties>
<Gui>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
</Gui>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
<Measure>
<Ellipsoid type="QString">WGS84</Ellipsoid>
</Measure>
<Measurement>
<AreaUnits type="QString">m2</AreaUnits>
<DistanceUnits type="QString">meters</DistanceUnits>
</Measurement>
<PAL>
<CandidatesLine type="int">50</CandidatesLine>
<CandidatesLinePerCM type="double">5</CandidatesLinePerCM>
<CandidatesPoint type="int">16</CandidatesPoint>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<CandidatesPolygonPerCM type="double">2.5</CandidatesPolygonPerCM>
<DrawOutlineLabels type="bool">true</DrawOutlineLabels>
<DrawRectOnly type="bool">false</DrawRectOnly>
<DrawUnplaced type="bool">false</DrawUnplaced>
<PlacementEngineVersion type="int">0</PlacementEngineVersion>
<SearchMethod type="int">0</SearchMethod>
<ShowingAllLabels type="bool">false</ShowingAllLabels>
<ShowingCandidates type="bool">false</ShowingCandidates>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<TextFormat type="int">0</TextFormat>
<UnplacedColor type="QString">255,0,0,255</UnplacedColor>
</PAL>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<PositionPrecision>
<Automatic type="bool">true</Automatic>
<DecimalPlaces type="int">2</DecimalPlaces>
</PositionPrecision>
<SpatialRefSys>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
</properties>
<visibility-presets/>
<transformContext/>
<projectMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<author><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.</author>
<creation>2019-06-10T14:55:55</creation>
</projectMetadata>
<Annotations/>
<Layouts/>
<Bookmarks/>
<ProjectViewSettings UseProjectScales="0">
<Scales/>
</ProjectViewSettings>
<ProjectDisplaySettings>
<BearingFormat id="bearing">
<Option type="Map">
<Option type="QChar" value="" name="decimal_separator"/>
<Option type="int" value="6" name="decimals"/>
<Option type="int" value="0" name="direction_format"/>
<Option type="int" value="0" name="rounding_type"/>
<Option type="bool" value="false" name="show_plus"/>
<Option type="bool" value="true" name="show_thousand_separator"/>
<Option type="bool" value="false" name="show_trailing_zeros"/>
<Option type="QChar" value="" name="thousand_separator"/>
</Option>
</BearingFormat>
</ProjectDisplaySettings>
</qgis>

View File

@ -0,0 +1,326 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis version="3.6.0-Noosa" projectname="">
<homePath path=""/>
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<trust active="0"/>
<projectCrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</projectCrs>
<layer-tree-group>
<customproperties/>
<layer-tree-layer name="NDVI" id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b" source="contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=NDVI:${day}NDVI_h20v03&amp;layers=NDVI:${day}NDVI_h20v04&amp;layers=NDVI:${day}NDVI_h21v03&amp;layers=NDVI:${day}NDVI_h21v04&amp;layers=NDVI:${day}NDVI_h21v05&amp;layers=NDVI:${day}NDVI_h22v03&amp;layers=NDVI:${day}NDVI_h22v04&amp;layers=NDVI:${day}NDVI_h22v05&amp;layers=NDVI:${day}NDVI_h23v03&amp;layers=NDVI:${day}NDVI_h23v04&amp;layers=NDVI:${day}NDVI_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms" expanded="0" checked="Qt::Checked" providerKey="wms">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer name="OpenStreetMap" id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416" source="crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png" expanded="1" checked="Qt::Checked" providerKey="wms">
<customproperties/>
</layer-tree-layer>
<custom-order enabled="0">
<item>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</item>
<item>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</item>
</custom-order>
</layer-tree-group>
<snapping-settings mode="2" unit="1" type="1" enabled="0" intersection-snapping="0" tolerance="12">
<individual-layer-settings/>
</snapping-settings>
<relations/>
<mapcanvas name="theMapCanvas" annotationsVisible="1">
<units>meters</units>
<extent>
<xmin>2465883.50908621679991484</xmin>
<ymin>264579.77565301861613989</ymin>
<xmax>12985575.38905057311058044</xmax>
<ymax>10784271.65561737865209579</ymax>
</extent>
<rotation>0</rotation>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<expressionContextScope/>
</mapcanvas>
<projectModels/>
<legend updateDrawingOrder="true">
<legendlayer name="NDVI" drawingOrder="-1" checked="Qt::Checked" showFeatureCount="0" open="false">
<filegroup open="false" hidden="false">
<legendlayerfile layerid="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b" visible="1" isInOverview="0"/>
</filegroup>
</legendlayer>
<legendlayer name="OpenStreetMap" drawingOrder="-1" checked="Qt::Checked" showFeatureCount="0" open="true">
<filegroup open="true" hidden="false">
<legendlayerfile layerid="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416" visible="1" isInOverview="0"/>
</filegroup>
</legendlayer>
</legend>
<mapViewDocks/>
<mapViewDocks3D/>
<projectlayers>
<maplayer type="raster" refreshOnNotifyEnabled="0" autoRefreshEnabled="0" hasScaleBasedVisibilityFlag="0" refreshOnNotifyMessage="" autoRefreshTime="0" minScale="1e+08" maxScale="0" styleCategories="AllStyleCategories">
<extent>
<xmin>-20037508.34278924390673637</xmin>
<ymin>-20037508.34278925508260727</ymin>
<xmax>20037508.34278924390673637</xmax>
<ymax>20037508.34278924390673637</ymax>
</extent>
<id>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</id>
<datasource>crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>OpenStreetMap</layername>
<srs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="identify/format" value="Undefined"/>
<property key="ol_layer_type" value="OpenStreetMap"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast brightness="0" contrast="0"/>
<huesaturation colorizeStrength="100" grayscaleMode="0" colorizeGreen="128" colorizeBlue="128" colorizeOn="0" saturation="0" colorizeRed="255"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
<maplayer type="raster" refreshOnNotifyEnabled="0" autoRefreshEnabled="0" hasScaleBasedVisibilityFlag="0" refreshOnNotifyMessage="" autoRefreshTime="0" minScale="1e+08" maxScale="0" styleCategories="AllStyleCategories">
<extent>
<xmin>2906345.494111736305058</xmin>
<ymin>3503584.68813749961555004</ymin>
<xmax>13358323.19605071656405926</xmax>
<ymax>8399737.88861873932182789</ymax>
</extent>
<id>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</id>
<datasource>contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=NDVI:${day}NDVI_h20v03&amp;layers=NDVI:${day}NDVI_h20v04&amp;layers=NDVI:${day}NDVI_h21v03&amp;layers=NDVI:${day}NDVI_h21v04&amp;layers=NDVI:${day}NDVI_h21v05&amp;layers=NDVI:${day}NDVI_h22v03&amp;layers=NDVI:${day}NDVI_h22v04&amp;layers=NDVI:${day}NDVI_h22v05&amp;layers=NDVI:${day}NDVI_h23v03&amp;layers=NDVI:${day}NDVI_h23v04&amp;layers=NDVI:${day}NDVI_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>${day}NDVI</layername>
<srs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<contact>
<name></name>
<organization></organization>
<position></position>
<voice></voice>
<fax></fax>
<email></email>
<role></role>
</contact>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent>
<spatial minx="0" dimensions="2" minz="0" maxz="0" maxy="0" crs="" miny="0" maxx="0"/>
<temporal>
<period>
<start></start>
<end></end>
</period>
</temporal>
</extent>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="WMSBackgroundLayer" value="false"/>
<property key="WMSPublishDataSourceUrl" value="false"/>
<property key="embeddedWidgets/count" value="0"/>
<property key="identify/format" value="Html"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast brightness="0" contrast="0"/>
<huesaturation colorizeStrength="100" grayscaleMode="0" colorizeGreen="128" colorizeBlue="128" colorizeOn="0" saturation="0" colorizeRed="255"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
</projectlayers>
<layerorder>
<layer id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416"/>
<layer id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b"/>
</layerorder>
<properties>
<PositionPrecision>
<Automatic type="bool">true</Automatic>
<DecimalPlaces type="int">2</DecimalPlaces>
</PositionPrecision>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<Measure>
<Ellipsoid type="QString">WGS84</Ellipsoid>
</Measure>
<Gui>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
</Gui>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
<PAL>
<DrawOutlineLabels type="bool">true</DrawOutlineLabels>
<DrawRectOnly type="bool">false</DrawRectOnly>
<TextFormat type="int">0</TextFormat>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<CandidatesPoint type="int">16</CandidatesPoint>
<CandidatesLine type="int">50</CandidatesLine>
<SearchMethod type="int">0</SearchMethod>
<ShowingAllLabels type="bool">false</ShowingAllLabels>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<ShowingCandidates type="bool">false</ShowingCandidates>
</PAL>
<SpatialRefSys>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<Measurement>
<AreaUnits type="QString">m2</AreaUnits>
<DistanceUnits type="QString">meters</DistanceUnits>
</Measurement>
</properties>
<visibility-presets/>
<transformContext/>
<projectMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<author><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.</author>
<creation>2019-06-10T14:55:55</creation>
</projectMetadata>
<Annotations/>
<Layouts/>
</qgis>

View File

@ -0,0 +1,354 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" saveUser="ivanov.i" version="3.12.3-București" saveUserFull="Иванов И.">
<homePath path=""/>
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<trust active="0"/>
<projectCrs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</projectCrs>
<layer-tree-group>
<customproperties/>
<layer-tree-layer checked="Qt::Checked" providerKey="wms" expanded="1" source="contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=NDWI:${day}NDWI_h20v03&amp;layers=NDWI:${day}NDWI_h20v04&amp;layers=NDWI:${day}NDWI_h21v03&amp;layers=NDWI:${day}NDWI_h21v04&amp;layers=NDWI:${day}NDWI_h21v05&amp;layers=NDWI:${day}NDWI_h22v03&amp;layers=NDWI:${day}NDWI_h22v04&amp;layers=NDWI:${day}NDWI_h22v05&amp;layers=NDWI:${day}NDWI_h23v03&amp;layers=NDWI:${day}NDWI_h23v04&amp;layers=NDWI:${day}NDWI_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms" legend_exp="" id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b" name="NDWI">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer checked="Qt::Checked" providerKey="wms" expanded="1" source="crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png" legend_exp="" id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416" name="OpenStreetMap">
<customproperties/>
</layer-tree-layer>
<custom-order enabled="0">
<item>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</item>
<item>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</item>
</custom-order>
</layer-tree-group>
<snapping-settings intersection-snapping="0" enabled="0" type="1" mode="2" tolerance="12" unit="1">
<individual-layer-settings/>
</snapping-settings>
<relations/>
<mapcanvas annotationsVisible="1" name="theMapCanvas">
<units>meters</units>
<extent>
<xmin>3863030.08689398271963</xmin>
<ymin>3270963.49336460698395967</ymin>
<xmax>9122876.02687616087496281</xmax>
<ymax>8530809.43334678560495377</ymax>
</extent>
<rotation>0</rotation>
<destinationsrs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<expressionContextScope/>
</mapcanvas>
<projectModels/>
<legend updateDrawingOrder="true">
<legendlayer checked="Qt::Checked" showFeatureCount="0" drawingOrder="-1" open="true" name="NDWI">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" visible="1" layerid="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b"/>
</filegroup>
</legendlayer>
<legendlayer checked="Qt::Checked" showFeatureCount="0" drawingOrder="-1" open="true" name="OpenStreetMap">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" visible="1" layerid="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416"/>
</filegroup>
</legendlayer>
</legend>
<mapViewDocks/>
<mapViewDocks3D/>
<projectlayers>
<maplayer styleCategories="AllStyleCategories" type="raster" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" minScale="1e+08" autoRefreshEnabled="0" maxScale="0" hasScaleBasedVisibilityFlag="0" autoRefreshTime="0">
<extent>
<xmin>-20037508.34278924390673637</xmin>
<ymin>-20037508.34278925508260727</ymin>
<xmax>20037508.34278924390673637</xmax>
<ymax>20037508.34278924390673637</ymax>
</extent>
<id>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</id>
<datasource>crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>OpenStreetMap</layername>
<srs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<wkt></wkt>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="identify/format" value="Undefined"/>
<property key="ol_layer_type" value="OpenStreetMap"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" nodataColor="" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast contrast="0" brightness="0"/>
<huesaturation colorizeRed="255" colorizeStrength="100" grayscaleMode="0" colorizeOn="0" colorizeBlue="128" colorizeGreen="128" saturation="0"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
<maplayer styleCategories="AllStyleCategories" type="raster" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" minScale="1e+08" autoRefreshEnabled="0" maxScale="0" hasScaleBasedVisibilityFlag="0" autoRefreshTime="0">
<extent>
<xmin>2906345.49411173490807414</xmin>
<ymin>3503584.68813749961555004</ymin>
<xmax>13358323.19605071656405926</xmax>
<ymax>8399737.88861873932182789</ymax>
</extent>
<id>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</id>
<datasource>contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=NDWI:${day}NDWI_h20v03&amp;layers=NDWI:${day}NDWI_h20v04&amp;layers=NDWI:${day}NDWI_h21v03&amp;layers=NDWI:${day}NDWI_h21v04&amp;layers=NDWI:${day}NDWI_h21v05&amp;layers=NDWI:${day}NDWI_h22v03&amp;layers=NDWI:${day}NDWI_h22v04&amp;layers=NDWI:${day}NDWI_h22v05&amp;layers=NDWI:${day}NDWI_h23v03&amp;layers=NDWI:${day}NDWI_h23v04&amp;layers=NDWI:${day}NDWI_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>${day}NDWI</layername>
<srs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<contact>
<name></name>
<organization></organization>
<position></position>
<voice></voice>
<fax></fax>
<email></email>
<role></role>
</contact>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<wkt></wkt>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</crs>
<extent>
<spatial minz="0" minx="0" miny="0" crs="" maxz="0" dimensions="2" maxy="0" maxx="0"/>
<temporal>
<period>
<start></start>
<end></end>
</period>
</temporal>
</extent>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="WMSBackgroundLayer" value="false"/>
<property key="WMSPublishDataSourceUrl" value="false"/>
<property key="embeddedWidgets/count" value="0"/>
<property key="identify/format" value="Html"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" nodataColor="" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast contrast="0" brightness="0"/>
<huesaturation colorizeRed="255" colorizeStrength="100" grayscaleMode="0" colorizeOn="0" colorizeBlue="128" colorizeGreen="128" saturation="0"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
</projectlayers>
<layerorder>
<layer id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416"/>
<layer id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b"/>
</layerorder>
<properties>
<Gui>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
</Gui>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
<Measure>
<Ellipsoid type="QString">WGS84</Ellipsoid>
</Measure>
<Measurement>
<AreaUnits type="QString">m2</AreaUnits>
<DistanceUnits type="QString">meters</DistanceUnits>
</Measurement>
<PAL>
<CandidatesLine type="int">50</CandidatesLine>
<CandidatesLinePerCM type="double">5</CandidatesLinePerCM>
<CandidatesPoint type="int">16</CandidatesPoint>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<CandidatesPolygonPerCM type="double">2.5</CandidatesPolygonPerCM>
<DrawOutlineLabels type="bool">true</DrawOutlineLabels>
<DrawRectOnly type="bool">false</DrawRectOnly>
<DrawUnplaced type="bool">false</DrawUnplaced>
<PlacementEngineVersion type="int">0</PlacementEngineVersion>
<SearchMethod type="int">0</SearchMethod>
<ShowingAllLabels type="bool">false</ShowingAllLabels>
<ShowingCandidates type="bool">false</ShowingCandidates>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<TextFormat type="int">0</TextFormat>
<UnplacedColor type="QString">255,0,0,255</UnplacedColor>
</PAL>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<PositionPrecision>
<Automatic type="bool">true</Automatic>
<DecimalPlaces type="int">2</DecimalPlaces>
</PositionPrecision>
<SpatialRefSys>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
</properties>
<visibility-presets/>
<transformContext/>
<projectMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<author><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.</author>
<creation>2019-06-10T14:55:55</creation>
</projectMetadata>
<Annotations/>
<Layouts/>
<Bookmarks/>
<ProjectViewSettings UseProjectScales="0">
<Scales/>
</ProjectViewSettings>
<ProjectDisplaySettings>
<BearingFormat id="bearing">
<Option type="Map">
<Option type="QChar" value="" name="decimal_separator"/>
<Option type="int" value="6" name="decimals"/>
<Option type="int" value="0" name="direction_format"/>
<Option type="int" value="0" name="rounding_type"/>
<Option type="bool" value="false" name="show_plus"/>
<Option type="bool" value="true" name="show_thousand_separator"/>
<Option type="bool" value="false" name="show_trailing_zeros"/>
<Option type="QChar" value="" name="thousand_separator"/>
</Option>
</BearingFormat>
</ProjectDisplaySettings>
</qgis>

View File

@ -0,0 +1,354 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" saveUser="ivanov.i" version="3.12.3-București" saveUserFull="Иванов И.">
<homePath path=""/>
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<trust active="0"/>
<projectCrs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</projectCrs>
<layer-tree-group>
<customproperties/>
<layer-tree-layer checked="Qt::Checked" providerKey="wms" expanded="1" source="contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=NDWI_CMP:${day}NDWI_CMP_h20v03&amp;layers=NDWI_CMP:${day}NDWI_CMP_h20v04&amp;layers=NDWI_CMP:${day}NDWI_CMP_h21v03&amp;layers=NDWI_CMP:${day}NDWI_CMP_h21v04&amp;layers=NDWI_CMP:${day}NDWI_CMP_h21v05&amp;layers=NDWI_CMP:${day}NDWI_CMP_h22v03&amp;layers=NDWI_CMP:${day}NDWI_CMP_h22v04&amp;layers=NDWI_CMP:${day}NDWI_CMP_h22v05&amp;layers=NDWI_CMP:${day}NDWI_CMP_h23v03&amp;layers=NDWI_CMP:${day}NDWI_CMP_h23v04&amp;layers=NDWI_CMP:${day}NDWI_CMP_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms" legend_exp="" id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b" name="NDWI_CMP">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer checked="Qt::Checked" providerKey="wms" expanded="1" source="crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png" legend_exp="" id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416" name="OpenStreetMap">
<customproperties/>
</layer-tree-layer>
<custom-order enabled="0">
<item>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</item>
<item>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</item>
</custom-order>
</layer-tree-group>
<snapping-settings intersection-snapping="0" enabled="0" type="1" mode="2" tolerance="12" unit="1">
<individual-layer-settings/>
</snapping-settings>
<relations/>
<mapcanvas annotationsVisible="1" name="theMapCanvas">
<units>meters</units>
<extent>
<xmin>3863030.08689398271963</xmin>
<ymin>3270963.49336460698395967</ymin>
<xmax>9122876.02687616087496281</xmax>
<ymax>8530809.43334678560495377</ymax>
</extent>
<rotation>0</rotation>
<destinationsrs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<expressionContextScope/>
</mapcanvas>
<projectModels/>
<legend updateDrawingOrder="true">
<legendlayer checked="Qt::Checked" showFeatureCount="0" drawingOrder="-1" open="true" name="NDWI_CMP">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" visible="1" layerid="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b"/>
</filegroup>
</legendlayer>
<legendlayer checked="Qt::Checked" showFeatureCount="0" drawingOrder="-1" open="true" name="OpenStreetMap">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" visible="1" layerid="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416"/>
</filegroup>
</legendlayer>
</legend>
<mapViewDocks/>
<mapViewDocks3D/>
<projectlayers>
<maplayer styleCategories="AllStyleCategories" type="raster" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" minScale="1e+08" autoRefreshEnabled="0" maxScale="0" hasScaleBasedVisibilityFlag="0" autoRefreshTime="0">
<extent>
<xmin>-20037508.34278924390673637</xmin>
<ymin>-20037508.34278925508260727</ymin>
<xmax>20037508.34278924390673637</xmax>
<ymax>20037508.34278924390673637</ymax>
</extent>
<id>OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416</id>
<datasource>crs=EPSG:3857&amp;format&amp;type=xyz&amp;url=http://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>OpenStreetMap</layername>
<srs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<wkt></wkt>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="identify/format" value="Undefined"/>
<property key="ol_layer_type" value="OpenStreetMap"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" nodataColor="" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast contrast="0" brightness="0"/>
<huesaturation colorizeRed="255" colorizeStrength="100" grayscaleMode="0" colorizeOn="0" colorizeBlue="128" colorizeGreen="128" saturation="0"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
<maplayer styleCategories="AllStyleCategories" type="raster" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" minScale="1e+08" autoRefreshEnabled="0" maxScale="0" hasScaleBasedVisibilityFlag="0" autoRefreshTime="0">
<extent>
<xmin>2906345.49411173490807414</xmin>
<ymin>3503584.68813749961555004</ymin>
<xmax>13358323.19605071656405926</xmax>
<ymax>8399737.88861873932182789</ymax>
</extent>
<id>h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b</id>
<datasource>contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=NDWI_CMP:${day}NDWI_CMP_h20v03&amp;layers=NDWI_CMP:${day}NDWI_CMP_h20v04&amp;layers=NDWI_CMP:${day}NDWI_CMP_h21v03&amp;layers=NDWI_CMP:${day}NDWI_CMP_h21v04&amp;layers=NDWI_CMP:${day}NDWI_CMP_h21v05&amp;layers=NDWI_CMP:${day}NDWI_CMP_h22v03&amp;layers=NDWI_CMP:${day}NDWI_CMP_h22v04&amp;layers=NDWI_CMP:${day}NDWI_CMP_h22v05&amp;layers=NDWI_CMP:${day}NDWI_CMP_h23v03&amp;layers=NDWI_CMP:${day}NDWI_CMP_h23v04&amp;layers=NDWI_CMP:${day}NDWI_CMP_h23v05&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;styles=&amp;url=http://geoserver2.ccalm.org/wms</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>${day}NDWI_CMP</layername>
<srs>
<spatialrefsys>
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["unknown"],AREA["World - 85°S to 85°N"],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<contact>
<name></name>
<organization></organization>
<position></position>
<voice></voice>
<fax></fax>
<email></email>
<role></role>
</contact>
<links/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys>
<wkt></wkt>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</crs>
<extent>
<spatial minz="0" minx="0" miny="0" crs="" maxz="0" dimensions="2" maxy="0" maxx="0"/>
<temporal>
<period>
<start></start>
<end></end>
</period>
</temporal>
</extent>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="default">
<map-layer-style name="default"/>
</map-layer-style-manager>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
</flags>
<customproperties>
<property key="WMSBackgroundLayer" value="false"/>
<property key="WMSPublishDataSourceUrl" value="false"/>
<property key="embeddedWidgets/count" value="0"/>
<property key="identify/format" value="Html"/>
</customproperties>
<pipe>
<rasterrenderer alphaBand="-1" type="singlebandcolordata" nodataColor="" opacity="1" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast contrast="0" brightness="0"/>
<huesaturation colorizeRed="255" colorizeStrength="100" grayscaleMode="0" colorizeOn="0" colorizeBlue="128" colorizeGreen="128" saturation="0"/>
<rasterresampler maxOversampling="2"/>
</pipe>
<blendMode>0</blendMode>
</maplayer>
</projectlayers>
<layerorder>
<layer id="OpenStreetMap_b190df4b_967b_471d_9b9c_3cb1d5e3b416"/>
<layer id="h23v05_h23v04_h23v03_h22v05_h22v04_h22v03_h21v05_h21v04_h21v03_h20v04_h20v03_9603ac31_1df8_4ac6_a749_7b7e66bb658b"/>
</layerorder>
<properties>
<Gui>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
</Gui>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
<Measure>
<Ellipsoid type="QString">WGS84</Ellipsoid>
</Measure>
<Measurement>
<AreaUnits type="QString">m2</AreaUnits>
<DistanceUnits type="QString">meters</DistanceUnits>
</Measurement>
<PAL>
<CandidatesLine type="int">50</CandidatesLine>
<CandidatesLinePerCM type="double">5</CandidatesLinePerCM>
<CandidatesPoint type="int">16</CandidatesPoint>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<CandidatesPolygonPerCM type="double">2.5</CandidatesPolygonPerCM>
<DrawOutlineLabels type="bool">true</DrawOutlineLabels>
<DrawRectOnly type="bool">false</DrawRectOnly>
<DrawUnplaced type="bool">false</DrawUnplaced>
<PlacementEngineVersion type="int">0</PlacementEngineVersion>
<SearchMethod type="int">0</SearchMethod>
<ShowingAllLabels type="bool">false</ShowingAllLabels>
<ShowingCandidates type="bool">false</ShowingCandidates>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<TextFormat type="int">0</TextFormat>
<UnplacedColor type="QString">255,0,0,255</UnplacedColor>
</PAL>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<PositionPrecision>
<Automatic type="bool">true</Automatic>
<DecimalPlaces type="int">2</DecimalPlaces>
</PositionPrecision>
<SpatialRefSys>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
</properties>
<visibility-presets/>
<transformContext/>
<projectMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<author><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.</author>
<creation>2019-06-10T14:55:55</creation>
</projectMetadata>
<Annotations/>
<Layouts/>
<Bookmarks/>
<ProjectViewSettings UseProjectScales="0">
<Scales/>
</ProjectViewSettings>
<ProjectDisplaySettings>
<BearingFormat id="bearing">
<Option type="Map">
<Option type="QChar" value="" name="decimal_separator"/>
<Option type="int" value="6" name="decimals"/>
<Option type="int" value="0" name="direction_format"/>
<Option type="int" value="0" name="rounding_type"/>
<Option type="bool" value="false" name="show_plus"/>
<Option type="bool" value="true" name="show_thousand_separator"/>
<Option type="bool" value="false" name="show_trailing_zeros"/>
<Option type="QChar" value="" name="thousand_separator"/>
</Option>
</BearingFormat>
</ProjectDisplaySettings>
</qgis>

View File

@ -0,0 +1,724 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis saveUserFull="Иванов И." version="3.32.1-Lima" saveDateTime="2023-09-08T15:05:07" saveUser="ivanov.i" projectname="">
<homePath path=""/>
<title></title>
<transaction mode="Disabled"/>
<projectFlags set=""/>
<projectCrs>
<spatialrefsys nativeFormat="Wkt">
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</projectCrs>
<elevation-shading-renderer edl-is-active="1" light-altitude="45" edl-distance-unit="0" hillshading-z-factor="1" combined-method="0" light-azimuth="315" is-active="0" edl-distance="0.5" hillshading-is-multidirectional="0" hillshading-is-active="0" edl-strength="1000"/>
<layer-tree-group>
<customproperties>
<Option/>
</customproperties>
<layer-tree-layer providerKey="wms" patch_size="-1,-1" name="${day}SMAP" legend_split_behavior="0" legend_exp="" checked="Qt::Checked" id="_8357e0b1_ef46_4436_ac52_f7a1b071a7a1" expanded="1" source="IgnoreGetMapUrl=1&amp;contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=SMAP:${day}SMAP&amp;styles&amp;tilePixelRatio=0&amp;url=http://geoserver2.ccalm.org/wms?viewparams%3Dtime_start:1667260800;time_end%3D1665532800;">
<customproperties>
<Option/>
</customproperties>
</layer-tree-layer>
<layer-tree-layer providerKey="wms" patch_size="-1,-1" name="OpenStreetMap" legend_split_behavior="0" legend_exp="" checked="Qt::Checked" id="OpenStreetMap_3eefb26a_f2d2_4a0b_b3e0_3ed661cbbc5d" expanded="1" source="type=xyz&amp;url=http://tile.openstreetmap.org/{z}/{x}/{y}.png">
<customproperties>
<Option/>
</customproperties>
</layer-tree-layer>
<custom-order enabled="0">
<item>OpenStreetMap_3eefb26a_f2d2_4a0b_b3e0_3ed661cbbc5d</item>
<item>_8357e0b1_ef46_4436_ac52_f7a1b071a7a1</item>
</custom-order>
</layer-tree-group>
<snapping-settings maxScale="0" mode="2" unit="1" intersection-snapping="0" self-snapping="0" enabled="0" tolerance="12" type="1" minScale="0" scaleDependencyMode="0">
<individual-layer-settings/>
</snapping-settings>
<relations/>
<polymorphicRelations/>
<mapcanvas name="theMapCanvas" annotationsVisible="1">
<units>meters</units>
<extent>
<xmin>-21039383.75992870703339577</xmin>
<ymin>-21039383.75992871075868607</ymin>
<xmax>21039383.75992870703339577</xmax>
<ymax>21039383.75992876291275024</ymax>
</extent>
<rotation>0</rotation>
<destinationsrs>
<spatialrefsys nativeFormat="Wkt">
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<expressionContextScope/>
</mapcanvas>
<projectModels/>
<legend updateDrawingOrder="true">
<legendlayer name="${day}SMAP" drawingOrder="-1" checked="Qt::Checked" open="true" showFeatureCount="0">
<filegroup hidden="false" open="true">
<legendlayerfile layerid="_8357e0b1_ef46_4436_ac52_f7a1b071a7a1" isInOverview="0" visible="1"/>
</filegroup>
</legendlayer>
<legendlayer name="OpenStreetMap" drawingOrder="-1" checked="Qt::Checked" open="true" showFeatureCount="0">
<filegroup hidden="false" open="true">
<legendlayerfile layerid="OpenStreetMap_3eefb26a_f2d2_4a0b_b3e0_3ed661cbbc5d" isInOverview="0" visible="1"/>
</filegroup>
</legendlayer>
</legend>
<mapViewDocks/>
<mapcanvas name="mAreaCanvas" annotationsVisible="1">
<units>degrees</units>
<extent>
<xmin>0</xmin>
<ymin>0</ymin>
<xmax>0</xmax>
<ymax>0</ymax>
</extent>
<rotation>0</rotation>
<destinationsrs>
<spatialrefsys nativeFormat="Wkt">
<wkt>GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]]</wkt>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<expressionContextScope/>
</mapcanvas>
<main-annotation-layer autoRefreshEnabled="0" styleCategories="AllStyleCategories" maxScale="0" autoRefreshTime="0" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" hasScaleBasedVisibilityFlag="0" legendPlaceholderImage="" type="annotation" minScale="1e+08">
<id>__________558d9f32_96f4_4271_9cb4_b90b4ebc6580</id>
<datasource></datasource>
<keywordList>
<value></value>
</keywordList>
<layername>Аннотации</layername>
<srs>
<spatialrefsys nativeFormat="Wkt">
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<dates/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys nativeFormat="Wkt">
<wkt></wkt>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<items/>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
<Private>0</Private>
</flags>
<customproperties>
<Option/>
</customproperties>
<layerOpacity>1</layerOpacity>
<blendMode>0</blendMode>
<paintEffect/>
</main-annotation-layer>
<projectlayers>
<maplayer autoRefreshEnabled="0" styleCategories="AllStyleCategories" maxScale="0" autoRefreshTime="0" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" hasScaleBasedVisibilityFlag="0" legendPlaceholderImage="" type="raster" minScale="1e+08">
<extent>
<xmin>-20037508.34278924390673637</xmin>
<ymin>-20037508.34278924763202667</ymin>
<xmax>20037508.34278924390673637</xmax>
<ymax>20037508.34278924763202667</ymax>
</extent>
<wgs84extent>
<xmin>-180</xmin>
<ymin>-85.05112877980660357</ymin>
<xmax>179.99999999999997158</xmax>
<ymax>85.05112877980660357</ymax>
</wgs84extent>
<id>OpenStreetMap_3eefb26a_f2d2_4a0b_b3e0_3ed661cbbc5d</id>
<datasource>type=xyz&amp;url=http://tile.openstreetmap.org/{z}/{x}/{y}.png</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>OpenStreetMap</layername>
<srs>
<spatialrefsys nativeFormat="Wkt">
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier>Тайлы OpenStreetMap</identifier>
<parentidentifier></parentidentifier>
<language></language>
<type>dataset</type>
<title>Тайлы OpenStreetMap</title>
<abstract>Проект OpenStreetMap создан картографическим сообществом, создающим и распространяющим данные о дорогах, территориях, границах и многом другом по всему миру.</abstract>
<links>
<link name="Источник" description="" size="" mimeType="" url="https://www.openstreetmap.org/" type="WWW:LINK" format=""/>
</links>
<dates/>
<fees></fees>
<rights>Базовая карта и данные подготовлены сообществом OpenStreetMap (CC-BY-SA). © https://www.openstreetmap.org and contributors.</rights>
<license>Лицензия Open Data Commons Open Database (ODbL)</license>
<license>Creative Commons Attribution-ShareAlike (CC-BY-SA)</license>
<encoding></encoding>
<crs>
<spatialrefsys nativeFormat="Wkt">
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent>
<spatial minx="-180" maxx="180" miny="-85.05112877980660357" dimensions="2" crs="EPSG:4326" maxz="0" minz="0" maxy="85.05112877980660357"/>
</extent>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="по умолчанию">
<map-layer-style name="по умолчанию"/>
</map-layer-style-manager>
<metadataUrls/>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
<Private>0</Private>
</flags>
<temporal mode="0" enabled="0" fetchMode="0">
<fixedRange>
<start></start>
<end></end>
</fixedRange>
</temporal>
<elevation zoffset="0" symbology="Line" enabled="0" zscale="1" band="1">
<data-defined-properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data-defined-properties>
<profileLineSymbol>
<symbol name="" clip_to_extent="1" is_animated="0" force_rhr="0" alpha="1" frame_rate="10" type="line">
<data_defined_properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data_defined_properties>
<layer enabled="1" id="{d5b45c66-5ba4-4ffe-928b-b76180ae5d44}" pass="0" class="SimpleLine" locked="0">
<Option type="Map">
<Option name="align_dash_pattern" value="0" type="QString"/>
<Option name="capstyle" value="square" type="QString"/>
<Option name="customdash" value="5;2" type="QString"/>
<Option name="customdash_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="customdash_unit" value="MM" type="QString"/>
<Option name="dash_pattern_offset" value="0" type="QString"/>
<Option name="dash_pattern_offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="dash_pattern_offset_unit" value="MM" type="QString"/>
<Option name="draw_inside_polygon" value="0" type="QString"/>
<Option name="joinstyle" value="bevel" type="QString"/>
<Option name="line_color" value="196,60,57,255" type="QString"/>
<Option name="line_style" value="solid" type="QString"/>
<Option name="line_width" value="0.6" type="QString"/>
<Option name="line_width_unit" value="MM" type="QString"/>
<Option name="offset" value="0" type="QString"/>
<Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="offset_unit" value="MM" type="QString"/>
<Option name="ring_filter" value="0" type="QString"/>
<Option name="trim_distance_end" value="0" type="QString"/>
<Option name="trim_distance_end_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="trim_distance_end_unit" value="MM" type="QString"/>
<Option name="trim_distance_start" value="0" type="QString"/>
<Option name="trim_distance_start_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="trim_distance_start_unit" value="MM" type="QString"/>
<Option name="tweak_dash_pattern_on_corners" value="0" type="QString"/>
<Option name="use_custom_dash" value="0" type="QString"/>
<Option name="width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</profileLineSymbol>
<profileFillSymbol>
<symbol name="" clip_to_extent="1" is_animated="0" force_rhr="0" alpha="1" frame_rate="10" type="fill">
<data_defined_properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data_defined_properties>
<layer enabled="1" id="{b4e5f16d-cf22-4f7a-a750-417fa434755d}" pass="0" class="SimpleFill" locked="0">
<Option type="Map">
<Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="color" value="196,60,57,255" type="QString"/>
<Option name="joinstyle" value="bevel" type="QString"/>
<Option name="offset" value="0,0" type="QString"/>
<Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="offset_unit" value="MM" type="QString"/>
<Option name="outline_color" value="35,35,35,255" type="QString"/>
<Option name="outline_style" value="no" type="QString"/>
<Option name="outline_width" value="0.26" type="QString"/>
<Option name="outline_width_unit" value="MM" type="QString"/>
<Option name="style" value="solid" type="QString"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</profileFillSymbol>
</elevation>
<customproperties>
<Option type="Map">
<Option name="identify/format" value="Value" type="QString"/>
<Option name="ol_layer_type" value="OpenStreetMap" type="QString"/>
</Option>
</customproperties>
<mapTip enabled="1"></mapTip>
<pipe-data-defined-properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</pipe-data-defined-properties>
<pipe>
<provider>
<resampling maxOversampling="2" enabled="false" zoomedOutResamplingMethod="nearestNeighbour" zoomedInResamplingMethod="nearestNeighbour"/>
</provider>
<rasterrenderer opacity="1" alphaBand="-1" nodataColor="" type="singlebandcolordata" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast gamma="1" brightness="0" contrast="0"/>
<huesaturation grayscaleMode="0" saturation="0" colorizeStrength="100" colorizeGreen="128" colorizeBlue="128" invertColors="0" colorizeOn="0" colorizeRed="255"/>
<rasterresampler maxOversampling="2"/>
<resamplingStage>resamplingFilter</resamplingStage>
</pipe>
<blendMode>0</blendMode>
</maplayer>
<maplayer autoRefreshEnabled="0" styleCategories="AllStyleCategories" maxScale="0" autoRefreshTime="0" refreshOnNotifyMessage="" refreshOnNotifyEnabled="0" hasScaleBasedVisibilityFlag="0" legendPlaceholderImage="" type="raster" minScale="1e+08">
<extent>
<xmin>-20037508.33720675110816956</xmin>
<ymin>-19983484.6311938650906086</ymin>
<xmax>20037055.05812187492847443</xmax>
<ymax>20028962.62836629152297974</ymax>
</extent>
<wgs84extent>
<xmin>-179.99999994985159901</xmin>
<ymin>-85.00908611398735104</ymin>
<xmax>179.99592807455246657</xmax>
<ymax>85.04450187956545903</ymax>
</wgs84extent>
<id>_8357e0b1_ef46_4436_ac52_f7a1b071a7a1</id>
<datasource>IgnoreGetMapUrl=1&amp;contextualWMSLegend=0&amp;crs=EPSG:3857&amp;dpiMode=7&amp;featureCount=10&amp;format=image/png&amp;layers=SMAP:${day}SMAP&amp;styles&amp;tilePixelRatio=0&amp;url=http://geoserver2.ccalm.org/wms?viewparams%3Dtime_start:1667260800;time_end%3D1665532800;</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>${day}SMAP</layername>
<srs>
<spatialrefsys nativeFormat="Wkt">
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo-Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<resourceMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<dates/>
<fees></fees>
<encoding></encoding>
<crs>
<spatialrefsys nativeFormat="Wkt">
<wkt></wkt>
<proj4></proj4>
<srsid>0</srsid>
<srid>0</srid>
<authid></authid>
<description></description>
<projectionacronym></projectionacronym>
<ellipsoidacronym></ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</crs>
<extent/>
</resourceMetadata>
<provider>wms</provider>
<noData>
<noDataList bandNo="1" useSrcNoData="0"/>
</noData>
<map-layer-style-manager current="по умолчанию">
<map-layer-style name="по умолчанию"/>
</map-layer-style-manager>
<metadataUrls/>
<flags>
<Identifiable>1</Identifiable>
<Removable>1</Removable>
<Searchable>1</Searchable>
<Private>0</Private>
</flags>
<temporal mode="0" enabled="0" fetchMode="0">
<fixedRange>
<start></start>
<end></end>
</fixedRange>
</temporal>
<elevation zoffset="0" symbology="Line" enabled="0" zscale="1" band="1">
<data-defined-properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data-defined-properties>
<profileLineSymbol>
<symbol name="" clip_to_extent="1" is_animated="0" force_rhr="0" alpha="1" frame_rate="10" type="line">
<data_defined_properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data_defined_properties>
<layer enabled="1" id="{1dfb735b-fea3-4003-9474-23a8751d6963}" pass="0" class="SimpleLine" locked="0">
<Option type="Map">
<Option name="align_dash_pattern" value="0" type="QString"/>
<Option name="capstyle" value="square" type="QString"/>
<Option name="customdash" value="5;2" type="QString"/>
<Option name="customdash_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="customdash_unit" value="MM" type="QString"/>
<Option name="dash_pattern_offset" value="0" type="QString"/>
<Option name="dash_pattern_offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="dash_pattern_offset_unit" value="MM" type="QString"/>
<Option name="draw_inside_polygon" value="0" type="QString"/>
<Option name="joinstyle" value="bevel" type="QString"/>
<Option name="line_color" value="145,82,45,255" type="QString"/>
<Option name="line_style" value="solid" type="QString"/>
<Option name="line_width" value="0.6" type="QString"/>
<Option name="line_width_unit" value="MM" type="QString"/>
<Option name="offset" value="0" type="QString"/>
<Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="offset_unit" value="MM" type="QString"/>
<Option name="ring_filter" value="0" type="QString"/>
<Option name="trim_distance_end" value="0" type="QString"/>
<Option name="trim_distance_end_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="trim_distance_end_unit" value="MM" type="QString"/>
<Option name="trim_distance_start" value="0" type="QString"/>
<Option name="trim_distance_start_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="trim_distance_start_unit" value="MM" type="QString"/>
<Option name="tweak_dash_pattern_on_corners" value="0" type="QString"/>
<Option name="use_custom_dash" value="0" type="QString"/>
<Option name="width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</profileLineSymbol>
<profileFillSymbol>
<symbol name="" clip_to_extent="1" is_animated="0" force_rhr="0" alpha="1" frame_rate="10" type="fill">
<data_defined_properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data_defined_properties>
<layer enabled="1" id="{78080609-56f0-4394-b59b-96a6fe98a63f}" pass="0" class="SimpleFill" locked="0">
<Option type="Map">
<Option name="border_width_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="color" value="145,82,45,255" type="QString"/>
<Option name="joinstyle" value="bevel" type="QString"/>
<Option name="offset" value="0,0" type="QString"/>
<Option name="offset_map_unit_scale" value="3x:0,0,0,0,0,0" type="QString"/>
<Option name="offset_unit" value="MM" type="QString"/>
<Option name="outline_color" value="35,35,35,255" type="QString"/>
<Option name="outline_style" value="no" type="QString"/>
<Option name="outline_width" value="0.26" type="QString"/>
<Option name="outline_width_unit" value="MM" type="QString"/>
<Option name="style" value="solid" type="QString"/>
</Option>
<data_defined_properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</data_defined_properties>
</layer>
</symbol>
</profileFillSymbol>
</elevation>
<customproperties>
<Option type="Map">
<Option name="identify/format" value="Html" type="QString"/>
</Option>
</customproperties>
<mapTip enabled="1"></mapTip>
<pipe-data-defined-properties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</pipe-data-defined-properties>
<pipe>
<provider>
<resampling maxOversampling="2" enabled="false" zoomedOutResamplingMethod="nearestNeighbour" zoomedInResamplingMethod="nearestNeighbour"/>
</provider>
<rasterrenderer opacity="1" alphaBand="-1" nodataColor="" type="singlebandcolordata" band="1">
<rasterTransparency/>
<minMaxOrigin>
<limits>None</limits>
<extent>WholeRaster</extent>
<statAccuracy>Estimated</statAccuracy>
<cumulativeCutLower>0.02</cumulativeCutLower>
<cumulativeCutUpper>0.98</cumulativeCutUpper>
<stdDevFactor>2</stdDevFactor>
</minMaxOrigin>
</rasterrenderer>
<brightnesscontrast gamma="1" brightness="0" contrast="0"/>
<huesaturation grayscaleMode="0" saturation="0" colorizeStrength="100" colorizeGreen="128" colorizeBlue="128" invertColors="0" colorizeOn="0" colorizeRed="255"/>
<rasterresampler maxOversampling="2"/>
<resamplingStage>resamplingFilter</resamplingStage>
</pipe>
<blendMode>0</blendMode>
</maplayer>
</projectlayers>
<layerorder>
<layer id="OpenStreetMap_3eefb26a_f2d2_4a0b_b3e0_3ed661cbbc5d"/>
<layer id="_8357e0b1_ef46_4436_ac52_f7a1b071a7a1"/>
</layerorder>
<properties>
<Digitizing>
<AvoidIntersectionsMode type="int">0</AvoidIntersectionsMode>
</Digitizing>
<Gui>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
</Gui>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
<Measure>
<Ellipsoid type="QString">EPSG:7030</Ellipsoid>
</Measure>
<Measurement>
<AreaUnits type="QString">m2</AreaUnits>
<DistanceUnits type="QString">meters</DistanceUnits>
</Measurement>
<PAL>
<CandidatesLinePerCM type="double">5</CandidatesLinePerCM>
<CandidatesPolygonPerCM type="double">2.5</CandidatesPolygonPerCM>
<DrawLabelMetrics type="bool">false</DrawLabelMetrics>
<DrawRectOnly type="bool">false</DrawRectOnly>
<DrawUnplaced type="bool">false</DrawUnplaced>
<PlacementEngineVersion type="int">1</PlacementEngineVersion>
<SearchMethod type="int">0</SearchMethod>
<ShowingAllLabels type="bool">false</ShowingAllLabels>
<ShowingCandidates type="bool">false</ShowingCandidates>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<TextFormat type="int">0</TextFormat>
<UnplacedColor type="QString">255,0,0,255</UnplacedColor>
</PAL>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<PositionPrecision>
<Automatic type="bool">true</Automatic>
<DecimalPlaces type="int">2</DecimalPlaces>
</PositionPrecision>
<SpatialRefSys>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
</properties>
<dataDefinedServerProperties>
<Option type="Map">
<Option name="name" value="" type="QString"/>
<Option name="properties"/>
<Option name="type" value="collection" type="QString"/>
</Option>
</dataDefinedServerProperties>
<visibility-presets/>
<transformContext/>
<projectMetadata>
<identifier></identifier>
<parentidentifier></parentidentifier>
<language></language>
<type></type>
<title></title>
<abstract></abstract>
<links/>
<dates>
<date value="2023-09-08T15:00:38" type="Created"/>
</dates>
<author>Иванов И.</author>
<creation>2023-09-08T15:00:38</creation>
</projectMetadata>
<Annotations/>
<Layouts/>
<mapViewDocks3D/>
<Bookmarks/>
<Sensors/>
<ProjectViewSettings UseProjectScales="0" rotation="0">
<Scales/>
</ProjectViewSettings>
<ProjectStyleSettings projectStyleId="attachment:///WnrGKX_styles.db" RandomizeDefaultSymbolColor="1" DefaultSymbolOpacity="1">
<databases/>
</ProjectStyleSettings>
<ProjectTimeSettings timeStepUnit="h" cumulativeTemporalRange="0" frameRate="1" timeStep="1"/>
<ElevationProperties>
<terrainProvider type="flat">
<TerrainProvider offset="0" scale="1"/>
</terrainProvider>
</ElevationProperties>
<ProjectDisplaySettings CoordinateAxisOrder="Default" CoordinateType="MapCrs">
<BearingFormat id="bearing">
<Option type="Map">
<Option name="decimal_separator" type="invalid"/>
<Option name="decimals" value="6" type="int"/>
<Option name="direction_format" value="0" type="int"/>
<Option name="rounding_type" value="0" type="int"/>
<Option name="show_plus" value="false" type="bool"/>
<Option name="show_thousand_separator" value="true" type="bool"/>
<Option name="show_trailing_zeros" value="false" type="bool"/>
<Option name="thousand_separator" type="invalid"/>
</Option>
</BearingFormat>
<GeographicCoordinateFormat id="geographiccoordinate">
<Option type="Map">
<Option name="angle_format" value="DecimalDegrees" type="QString"/>
<Option name="decimal_separator" type="invalid"/>
<Option name="decimals" value="6" type="int"/>
<Option name="rounding_type" value="0" type="int"/>
<Option name="show_leading_degree_zeros" value="false" type="bool"/>
<Option name="show_leading_zeros" value="false" type="bool"/>
<Option name="show_plus" value="false" type="bool"/>
<Option name="show_suffix" value="false" type="bool"/>
<Option name="show_thousand_separator" value="true" type="bool"/>
<Option name="show_trailing_zeros" value="false" type="bool"/>
<Option name="thousand_separator" type="invalid"/>
</Option>
</GeographicCoordinateFormat>
<CoordinateCustomCrs>
<spatialrefsys nativeFormat="Wkt">
<wkt>GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]]</wkt>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>EPSG:7030</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</CoordinateCustomCrs>
</ProjectDisplaySettings>
<ProjectGpsSettings autoAddTrackVertices="0" destinationFollowsActiveLayer="1" autoCommitFeatures="0" destinationLayer="">
<timeStampFields/>
</ProjectGpsSettings>
</qgis>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,539 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" version="2.18.6">
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<layer-tree-group expanded="1" checked="Qt::PartiallyChecked" name="">
<customproperties/>
<layer-tree-layer expanded="1" providerKey="postgres" checked="Qt::Checked" id="view_frmlocustinfo_p2_${year}20170221133600806" source="dbname='CCALM' host=ccalm.org port=5432 user='guest' sslmode=disable key='region_id' estimatedmetadata=true srid=4326 type=MultiPolygon table=&quot;public&quot;.&quot;view_frmlocustinfo_p2_${year}&quot; (geom) sql=${sql}" name="trt('Maps_of_areas_infested_above_Economic_Threshold_(ET)')">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer expanded="1" providerKey="" checked="Qt::Unchecked" id="OpenLayers_plugin_layer20170821155911549" source="" name="Bing Aerial with labels">
<customproperties/>
</layer-tree-layer>
</layer-tree-group>
<relations/>
<mapcanvas>
<units>meters</units>
<extent>
<xmin>4606484.6726676719263196</xmin>
<ymin>3728012.39886604063212872</ymin>
<xmax>9866330.61264913156628609</xmax>
<ymax>8074944.57324538938701153</ymax>
</extent>
<rotation>0</rotation>
<projections>1</projections>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<layer_coordinate_transform_info>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:4326" srcDatumTransform="-1" destDatumTransform="-1" layerid="view_frmlocustinfo_p2_${year}20170221133600806"/>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:3857" srcDatumTransform="-1" destDatumTransform="-1" layerid="OpenLayers_plugin_layer20170821155911549"/>
</layer_coordinate_transform_info>
</mapcanvas>
<layer-tree-canvas>
<custom-order enabled="0">
<item>view_frmlocustinfo_p2_${year}20170221133600806</item>
<item>OpenStreetMap20170221155223210</item>
</custom-order>
</layer-tree-canvas>
<legend updateDrawingOrder="true">
<legendlayer drawingOrder="-1" open="true" checked="Qt::Checked" name="trt('Maps_of_areas_infested_above_Economic_Threshold_(ET)')" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="view_frmlocustinfo_p2_${year}20170221133600806" visible="1"/>
</filegroup>
</legendlayer>
<legendlayer drawingOrder="-1" open="true" checked="Qt::Unchecked" name="Bing Aerial with labels" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="OpenLayers_plugin_layer20170821155911549" visible="0"/>
</filegroup>
</legendlayer>
</legend>
<projectlayers>
<maplayer minimumScale="0" maximumScale="1e+08" type="plugin" hasScaleBasedVisibilityFlag="0" name="openlayers">
<extent>
<xmin>-20037508.33999999985098839</xmin>
<ymin>-20037508.33999999985098839</ymin>
<xmax>20037508.33999999985098839</xmax>
<ymax>20037508.33999999985098839</ymax>
</extent>
<id>OpenLayers_plugin_layer20170821155911549</id>
<datasource></datasource>
<keywordList>
<value></value>
</keywordList>
<layername>Bing Aerial with labels</layername>
<srs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<customproperties>
<property key="ol_layer_type" value="Bing Aerial with labels"/>
</customproperties>
</maplayer>
<maplayer simplifyAlgorithm="0" minimumScale="0" maximumScale="1e+08" simplifyDrawingHints="1" minLabelScale="0" maxLabelScale="1e+08" simplifyDrawingTol="1" readOnly="0" geometry="Polygon" simplifyMaxScale="1" type="vector" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
<extent>
<xmin>-180</xmin>
<ymin>38.39295510000000178</ymin>
<xmax>180</xmax>
<ymax>82.05862320000009902</ymax>
</extent>
<id>view_frmlocustinfo_p2_${year}20170221133600806</id>
<datasource>dbname='CCALM' host=ccalm.org port=5432 user='guest' password='guest' sslmode=disable key='region_id' estimatedmetadata=true srid=4326 type=MultiPolygon table="main"."view_frmlocustinfo_p2_${year}" (geom) sql=${sql}</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>trt('Maps_of_areas_infested_above_Economic_Threshold_(ET)')</layername>
<srs>
<spatialrefsys>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</srs>
<provider encoding="System">postgres</provider>
<vectorjoins/>
<layerDependencies/>
<expressionfields/>
<map-layer-style-manager current="">
<map-layer-style name=""/>
</map-layer-style-manager>
<edittypes>
<edittype widgetv2type="TextEdit" name="country_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="region_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="locust_type_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="name">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="percent">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
</edittypes>
<renderer-v2 forceraster="0" symbollevels="0" type="RuleRenderer" enableorderby="0">
<rules key="{d1a60575-15b9-4869-b52b-df5b4d4f16de}">
<rule filter=" &quot;percent&quot; > 15" key="{659cc803-83ee-4573-a115-4a5c3cfc7629}" symbol="0" label=">15% trt('Increase')"/>
<rule filter=" &quot;percent&quot; &lt; 15 AND &quot;percent&quot; > -15" key="{9ceb56b1-6469-4f8a-9527-51a1d2151967}" symbol="2" label=">=15% trt('and') &lt;=15% trt('On_the_same_level')"/>
<rule filter=" &quot;percent&quot; &lt; -15" key="{b6d444f7-e753-4650-a049-92c6e40dd0bc}" symbol="1" label="&lt;15% trt('Decrease')"/>
<rule filter=" &quot;percent&quot; is null" key="{c017f2c4-f56f-48a8-bbc4-987fa0f239a9}" symbol="3" label="trt('No_data')"/>
</rules>
<symbols>
<symbol alpha="1" clip_to_extent="1" type="fill" name="0">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,0,0,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="2">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,238,0,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="1">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="0,255,76,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="3">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="150,150,150,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
</symbols>
</renderer-v2>
<labeling type="simple"/>
<customproperties>
<property key="embeddedWidgets/count" value="0"/>
<property key="labeling" value="pal"/>
<property key="labeling/addDirectionSymbol" value="false"/>
<property key="labeling/angleOffset" value="0"/>
<property key="labeling/blendMode" value="0"/>
<property key="labeling/bufferBlendMode" value="0"/>
<property key="labeling/bufferColorA" value="255"/>
<property key="labeling/bufferColorB" value="255"/>
<property key="labeling/bufferColorG" value="255"/>
<property key="labeling/bufferColorR" value="255"/>
<property key="labeling/bufferDraw" value="true"/>
<property key="labeling/bufferJoinStyle" value="128"/>
<property key="labeling/bufferNoFill" value="false"/>
<property key="labeling/bufferSize" value="1"/>
<property key="labeling/bufferSizeInMapUnits" value="false"/>
<property key="labeling/bufferSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/bufferTransp" value="0"/>
<property key="labeling/centroidInside" value="true"/>
<property key="labeling/centroidWhole" value="false"/>
<property key="labeling/dataDefined/CentroidWhole" value="0~~0~~~~name"/>
<property key="labeling/dataDefined/ScaleVisibility" value="0~~0~~~~name"/>
<property key="labeling/decimals" value="3"/>
<property key="labeling/displayAll" value="true"/>
<property key="labeling/dist" value="0"/>
<property key="labeling/distInMapUnits" value="true"/>
<property key="labeling/distMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/drawLabels" value="true"/>
<property key="labeling/enabled" value="true"/>
<property key="labeling/fieldName" value="&quot;name&quot;||'\n'|| &quot;percent&quot;||'%' "/>
<property key="labeling/fitInPolygonOnly" value="true"/>
<property key="labeling/fontCapitals" value="4"/>
<property key="labeling/fontFamily" value="Arial"/>
<property key="labeling/fontItalic" value="false"/>
<property key="labeling/fontLetterSpacing" value="0"/>
<property key="labeling/fontLimitPixelSize" value="false"/>
<property key="labeling/fontMaxPixelSize" value="10000"/>
<property key="labeling/fontMinPixelSize" value="3"/>
<property key="labeling/fontSize" value="7"/>
<property key="labeling/fontSizeInMapUnits" value="false"/>
<property key="labeling/fontSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/fontStrikeout" value="false"/>
<property key="labeling/fontUnderline" value="false"/>
<property key="labeling/fontWeight" value="75"/>
<property key="labeling/fontWordSpacing" value="0"/>
<property key="labeling/formatNumbers" value="false"/>
<property key="labeling/isExpression" value="true"/>
<property key="labeling/labelOffsetInMapUnits" value="false"/>
<property key="labeling/labelOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/labelPerPart" value="false"/>
<property key="labeling/leftDirectionSymbol" value="&lt;"/>
<property key="labeling/limitNumLabels" value="false"/>
<property key="labeling/maxCurvedCharAngleIn" value="25"/>
<property key="labeling/maxCurvedCharAngleOut" value="-25"/>
<property key="labeling/maxNumLabels" value="2000"/>
<property key="labeling/mergeLines" value="false"/>
<property key="labeling/minFeatureSize" value="3"/>
<property key="labeling/multilineAlign" value="4294967295"/>
<property key="labeling/multilineHeight" value="1"/>
<property key="labeling/namedStyle" value="Bold"/>
<property key="labeling/obstacle" value="false"/>
<property key="labeling/obstacleFactor" value="0"/>
<property key="labeling/obstacleType" value="0"/>
<property key="labeling/offsetType" value="0"/>
<property key="labeling/placeDirectionSymbol" value="0"/>
<property key="labeling/placement" value="1"/>
<property key="labeling/placementFlags" value="7"/>
<property key="labeling/plussign" value="false"/>
<property key="labeling/predefinedPositionOrder" value="TR,TL,BR,BL,R,L,TSR,BSR"/>
<property key="labeling/preserveRotation" value="true"/>
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
<property key="labeling/priority" value="5"/>
<property key="labeling/quadOffset" value="1"/>
<property key="labeling/repeatDistance" value="0"/>
<property key="labeling/repeatDistanceMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/repeatDistanceUnit" value="1"/>
<property key="labeling/reverseDirectionSymbol" value="false"/>
<property key="labeling/rightDirectionSymbol" value=">"/>
<property key="labeling/scaleMax" value="35000000"/>
<property key="labeling/scaleMin" value="1"/>
<property key="labeling/scaleVisibility" value="true"/>
<property key="labeling/shadowBlendMode" value="6"/>
<property key="labeling/shadowColorB" value="0"/>
<property key="labeling/shadowColorG" value="0"/>
<property key="labeling/shadowColorR" value="0"/>
<property key="labeling/shadowDraw" value="false"/>
<property key="labeling/shadowOffsetAngle" value="135"/>
<property key="labeling/shadowOffsetDist" value="1"/>
<property key="labeling/shadowOffsetGlobal" value="true"/>
<property key="labeling/shadowOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowOffsetUnits" value="1"/>
<property key="labeling/shadowRadius" value="1.5"/>
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
<property key="labeling/shadowRadiusMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowRadiusUnits" value="1"/>
<property key="labeling/shadowScale" value="100"/>
<property key="labeling/shadowTransparency" value="30"/>
<property key="labeling/shadowUnder" value="0"/>
<property key="labeling/shapeBlendMode" value="0"/>
<property key="labeling/shapeBorderColorA" value="255"/>
<property key="labeling/shapeBorderColorB" value="128"/>
<property key="labeling/shapeBorderColorG" value="128"/>
<property key="labeling/shapeBorderColorR" value="128"/>
<property key="labeling/shapeBorderWidth" value="0"/>
<property key="labeling/shapeBorderWidthMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeBorderWidthUnits" value="1"/>
<property key="labeling/shapeDraw" value="false"/>
<property key="labeling/shapeFillColorA" value="255"/>
<property key="labeling/shapeFillColorB" value="255"/>
<property key="labeling/shapeFillColorG" value="255"/>
<property key="labeling/shapeFillColorR" value="255"/>
<property key="labeling/shapeJoinStyle" value="64"/>
<property key="labeling/shapeOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeOffsetUnits" value="1"/>
<property key="labeling/shapeOffsetX" value="0"/>
<property key="labeling/shapeOffsetY" value="0"/>
<property key="labeling/shapeRadiiMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeRadiiUnits" value="1"/>
<property key="labeling/shapeRadiiX" value="0"/>
<property key="labeling/shapeRadiiY" value="0"/>
<property key="labeling/shapeRotation" value="0"/>
<property key="labeling/shapeRotationType" value="0"/>
<property key="labeling/shapeSVGFile" value=""/>
<property key="labeling/shapeSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeSizeType" value="0"/>
<property key="labeling/shapeSizeUnits" value="1"/>
<property key="labeling/shapeSizeX" value="0"/>
<property key="labeling/shapeSizeY" value="0"/>
<property key="labeling/shapeTransparency" value="0"/>
<property key="labeling/shapeType" value="0"/>
<property key="labeling/substitutions" value="&lt;substitutions/>"/>
<property key="labeling/textColorA" value="255"/>
<property key="labeling/textColorB" value="0"/>
<property key="labeling/textColorG" value="0"/>
<property key="labeling/textColorR" value="0"/>
<property key="labeling/textTransp" value="0"/>
<property key="labeling/upsidedownLabels" value="2"/>
<property key="labeling/useSubstitutions" value="false"/>
<property key="labeling/wrapChar" value=""/>
<property key="labeling/xOffset" value="0"/>
<property key="labeling/yOffset" value="0"/>
<property key="labeling/zIndex" value="1"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerTransparency>0</layerTransparency>
<displayfield>name</displayfield>
<label>0</label>
<labelattributes>
<label fieldname="" text="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"/>
<family fieldname="" name="MS Shell Dlg 2"/>
<size fieldname="" units="pt" value="12"/>
<bold fieldname="" on="0"/>
<italic fieldname="" on="0"/>
<underline fieldname="" on="0"/>
<strikeout fieldname="" on="0"/>
<color fieldname="" red="0" blue="0" green="0"/>
<x fieldname=""/>
<y fieldname=""/>
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
<angle fieldname="" value="0" auto="0"/>
<alignment fieldname="" value="center"/>
<buffercolor fieldname="" red="255" blue="255" green="255"/>
<buffersize fieldname="" units="pt" value="1"/>
<bufferenabled fieldname="" on=""/>
<multilineenabled fieldname="" on=""/>
<selectedonly on=""/>
</labelattributes>
<SingleCategoryDiagramRenderer diagramType="Histogram" sizeLegend="0" attributeLegend="1">
<DiagramCategory penColor="#000000" labelPlacementMethod="XHeight" penWidth="0" diagramOrientation="Up" sizeScale="0,0,0,0,0,0" minimumSize="0" barWidth="5" penAlpha="255" maxScaleDenominator="1e+08" backgroundColor="#ffffff" transparency="0" width="15" scaleDependency="Area" backgroundAlpha="255" angleOffset="1440" scaleBasedVisibility="0" enabled="0" height="15" lineSizeScale="0,0,0,0,0,0" sizeType="MM" lineSizeType="MM" minScaleDenominator="inf">
<fontProperties description="MS Shell Dlg 2,7.8,-1,5,50,0,0,0,0,0" style=""/>
<attribute field="" color="#000000" label=""/>
</DiagramCategory>
<symbol alpha="1" clip_to_extent="1" type="marker" name="sizeSymbol">
<layer pass="0" class="SimpleMarker" locked="0">
<prop k="angle" v="0"/>
<prop k="color" v="255,0,0,255"/>
<prop k="horizontal_anchor_point" v="1"/>
<prop k="joinstyle" v="bevel"/>
<prop k="name" v="circle"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0"/>
<prop k="outline_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
</layer>
</symbol>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings yPosColumn="-1" showColumn="-1" linePlacementFlags="10" placement="0" dist="0" xPosColumn="-1" priority="0" obstacle="0" zIndex="0" showAll="1"/>
<annotationform>.</annotationform>
<aliases>
<alias field="country_id" index="0" name=""/>
<alias field="region_id" index="1" name=""/>
<alias field="locust_type_id" index="2" name=""/>
<alias field="name" index="3" name=""/>
<alias field="percent" index="4" name=""/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<attributeactions default="-1"/>
<attributetableconfig actionWidgetStyle="dropDown" sortExpression="" sortOrder="762605167">
<columns>
<column width="-1" hidden="0" type="field" name="country_id"/>
<column width="-1" hidden="0" type="field" name="region_id"/>
<column width="-1" hidden="0" type="field" name="locust_type_id"/>
<column width="-1" hidden="0" type="field" name="name"/>
<column width="-1" hidden="0" type="field" name="percent"/>
<column width="-1" hidden="1" type="actions"/>
</columns>
</attributetableconfig>
<editform>.</editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath>.</editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.
Use this function to add extra logic to your forms.
Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<widgets/>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
<defaults>
<default field="country_id" expression=""/>
<default field="region_id" expression=""/>
<default field="locust_type_id" expression=""/>
<default field="name" expression=""/>
<default field="percent" expression=""/>
</defaults>
<previewExpression></previewExpression>
</maplayer>
</projectlayers>
<properties>
<Measurement>
<DistanceUnits type="QString">meters</DistanceUnits>
<AreaUnits type="QString">m2</AreaUnits>
</Measurement>
<SpatialRefSys>
<ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String>
<ProjectCrs type="QString">EPSG:4326</ProjectCrs>
<ProjectCRSID type="int">3452</ProjectCRSID>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<PAL>
<SearchMethod type="int">0</SearchMethod>
<ShowingShadowRects type="bool">false</ShowingShadowRects>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<ShowingCandidates type="bool">false</ShowingCandidates>
<DrawRectOnly type="bool">false</DrawRectOnly>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<CandidatesLine type="int">50</CandidatesLine>
<CandidatesPoint type="int">16</CandidatesPoint>
<ShowingAllLabels type="bool">true</ShowingAllLabels>
<DrawOutlineLabels type="bool">false</DrawOutlineLabels>
</PAL>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<Gui>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
</Gui>
<Digitizing>
<DefaultSnapToleranceUnit type="int">2</DefaultSnapToleranceUnit>
<LayerSnappingList type="QStringList">
<value>view_frmlocustinfo_p2_${year}20170221133600806</value>
</LayerSnappingList>
<LayerSnappingEnabledList type="QStringList">
<value>disabled</value>
</LayerSnappingEnabledList>
<SnappingMode type="QString">current_layer</SnappingMode>
<AvoidIntersectionsList type="QStringList"/>
<LayerSnappingToleranceUnitList type="QStringList">
<value>2</value>
</LayerSnappingToleranceUnitList>
<LayerSnapToList type="QStringList">
<value>to_vertex_and_segment</value>
</LayerSnapToList>
<DefaultSnapType type="QString">off</DefaultSnapType>
<DefaultSnapTolerance type="double">0</DefaultSnapTolerance>
<LayerSnappingToleranceList type="QStringList">
<value>0.000000</value>
</LayerSnappingToleranceList>
</Digitizing>
<PositionPrecision>
<DecimalPlaces type="int">2</DecimalPlaces>
<Automatic type="bool">true</Automatic>
</PositionPrecision>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
</properties>
<visibility-presets/>
</qgis>

View File

@ -0,0 +1,509 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" version="2.18.6">
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<layer-tree-group expanded="1" checked="Qt::PartiallyChecked" name="">
<customproperties/>
<layer-tree-layer expanded="1" providerKey="postgres" checked="Qt::Checked" id="view_frmlocustinfo_p2r_${year}20170221133600806" source="dbname='CCALM' host=ccalm.org port=5432 user='guest' sslmode=disable key='region_id' estimatedmetadata=true srid=4326 type=MultiPolygon table=&quot;public&quot;.&quot;view_frmlocustinfo_p2r_${year}&quot; (geom) sql=${sql}" name="trt('Maps_of_areas_infested_above_Economic_Threshold_(ET)')">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer expanded="1" providerKey="" checked="Qt::Unchecked" id="OpenLayers_plugin_layer20170821155911549" source="" name="Bing Aerial with labels">
<customproperties/>
</layer-tree-layer>
</layer-tree-group>
<relations/>
<mapcanvas>
<units>meters</units>
<extent>
<xmin>4606484.6726676719263196</xmin>
<ymin>3728012.39886604063212872</ymin>
<xmax>9866330.61264913156628609</xmax>
<ymax>8074944.57324538938701153</ymax>
</extent>
<rotation>0</rotation>
<projections>1</projections>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<layer_coordinate_transform_info>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:4326" srcDatumTransform="-1" destDatumTransform="-1" layerid="view_frmlocustinfo_p2r_${year}20170221133600806"/>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:3857" srcDatumTransform="-1" destDatumTransform="-1" layerid="OpenLayers_plugin_layer20170821155911549"/>
</layer_coordinate_transform_info>
</mapcanvas>
<layer-tree-canvas>
<custom-order enabled="0">
<item>view_frmlocustinfo_p2r_${year}20170221133600806</item>
<item>OpenStreetMap20170221155223210</item>
</custom-order>
</layer-tree-canvas>
<legend updateDrawingOrder="true">
<legendlayer drawingOrder="-1" open="true" checked="Qt::Checked" name="trt('Maps_of_areas_infested_above_Economic_Threshold_(ET)')" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="view_frmlocustinfo_p2r_${year}20170221133600806" visible="1"/>
</filegroup>
</legendlayer>
<legendlayer drawingOrder="-1" open="true" checked="Qt::Unchecked" name="Bing Aerial with labels" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="OpenLayers_plugin_layer20170821155911549" visible="0"/>
</filegroup>
</legendlayer>
</legend>
<projectlayers>
<maplayer simplifyAlgorithm="0" minimumScale="0" maximumScale="1e+08" simplifyDrawingHints="1" minLabelScale="0" maxLabelScale="1e+08" simplifyDrawingTol="1" readOnly="0" geometry="Polygon" simplifyMaxScale="1" type="vector" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
<extent>
<xmin>-180</xmin>
<ymin>38.39295510000000178</ymin>
<xmax>180</xmax>
<ymax>82.05862320000009902</ymax>
</extent>
<id>view_frmlocustinfo_p2r_${year}20170221133600806</id>
<datasource>dbname='CCALM' host=ccalm.org port=5432 user='guest' password='guest' sslmode=disable key='region_id' estimatedmetadata=true srid=4326 type=MultiPolygon table="main"."view_frmlocustinfo_p2r_${year}" (geom) sql=${sql}</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>trt('Maps_of_areas_infested_above_Economic_Threshold_(ET)')</layername>
<srs>
<spatialrefsys>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</srs>
<provider encoding="System">postgres</provider>
<vectorjoins/>
<layerDependencies/>
<expressionfields/>
<map-layer-style-manager current="">
<map-layer-style name=""/>
</map-layer-style-manager>
<edittypes>
<edittype widgetv2type="TextEdit" name="country_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="region_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="locust_type_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="name">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="percent">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
</edittypes>
<renderer-v2 forceraster="0" symbollevels="0" type="RuleRenderer" enableorderby="0">
<rules key="{d1a60575-15b9-4869-b52b-df5b4d4f16de}">
<rule filter=" &quot;percent&quot; > 15" key="{659cc803-83ee-4573-a115-4a5c3cfc7629}" symbol="0" label=">15% trt('Increase')"/>
<rule filter=" &quot;percent&quot; &lt; 15 AND &quot;percent&quot; > -15" key="{9ceb56b1-6469-4f8a-9527-51a1d2151967}" symbol="2" label=">=15% trt('and') &lt;=15% trt('On_the_same_level')"/>
<rule filter=" &quot;percent&quot; &lt; -15" key="{b6d444f7-e753-4650-a049-92c6e40dd0bc}" symbol="1" label="&lt;15% trt('Decrease')"/>
<rule filter=" &quot;percent&quot; is null" key="{c017f2c4-f56f-48a8-bbc4-987fa0f239a9}" symbol="3" label="trt('No_data')"/>
</rules>
<symbols>
<symbol alpha="1" clip_to_extent="1" type="fill" name="0">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,0,0,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="2">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,238,0,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="1">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="0,255,76,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="3">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="150,150,150,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
</symbols>
</renderer-v2>
<labeling type="simple"/>
<customproperties>
<property key="embeddedWidgets/count" value="0"/>
<property key="labeling" value="pal"/>
<property key="labeling/addDirectionSymbol" value="false"/>
<property key="labeling/angleOffset" value="0"/>
<property key="labeling/blendMode" value="0"/>
<property key="labeling/bufferBlendMode" value="0"/>
<property key="labeling/bufferColorA" value="255"/>
<property key="labeling/bufferColorB" value="255"/>
<property key="labeling/bufferColorG" value="255"/>
<property key="labeling/bufferColorR" value="255"/>
<property key="labeling/bufferDraw" value="true"/>
<property key="labeling/bufferJoinStyle" value="128"/>
<property key="labeling/bufferNoFill" value="false"/>
<property key="labeling/bufferSize" value="1"/>
<property key="labeling/bufferSizeInMapUnits" value="false"/>
<property key="labeling/bufferSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/bufferTransp" value="0"/>
<property key="labeling/centroidInside" value="true"/>
<property key="labeling/centroidWhole" value="false"/>
<property key="labeling/dataDefined/CentroidWhole" value="0~~0~~~~name"/>
<property key="labeling/dataDefined/ScaleVisibility" value="0~~0~~~~name"/>
<property key="labeling/decimals" value="3"/>
<property key="labeling/displayAll" value="true"/>
<property key="labeling/dist" value="0"/>
<property key="labeling/distInMapUnits" value="true"/>
<property key="labeling/distMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/drawLabels" value="true"/>
<property key="labeling/enabled" value="true"/>
<property key="labeling/fieldName" value="&quot;name&quot;||'\n'|| &quot;percent&quot;||'%' "/>
<property key="labeling/fitInPolygonOnly" value="true"/>
<property key="labeling/fontCapitals" value="4"/>
<property key="labeling/fontFamily" value="Arial"/>
<property key="labeling/fontItalic" value="false"/>
<property key="labeling/fontLetterSpacing" value="0"/>
<property key="labeling/fontLimitPixelSize" value="false"/>
<property key="labeling/fontMaxPixelSize" value="10000"/>
<property key="labeling/fontMinPixelSize" value="3"/>
<property key="labeling/fontSize" value="7"/>
<property key="labeling/fontSizeInMapUnits" value="false"/>
<property key="labeling/fontSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/fontStrikeout" value="false"/>
<property key="labeling/fontUnderline" value="false"/>
<property key="labeling/fontWeight" value="75"/>
<property key="labeling/fontWordSpacing" value="0"/>
<property key="labeling/formatNumbers" value="false"/>
<property key="labeling/isExpression" value="true"/>
<property key="labeling/labelOffsetInMapUnits" value="false"/>
<property key="labeling/labelOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/labelPerPart" value="false"/>
<property key="labeling/leftDirectionSymbol" value="&lt;"/>
<property key="labeling/limitNumLabels" value="false"/>
<property key="labeling/maxCurvedCharAngleIn" value="25"/>
<property key="labeling/maxCurvedCharAngleOut" value="-25"/>
<property key="labeling/maxNumLabels" value="2000"/>
<property key="labeling/mergeLines" value="false"/>
<property key="labeling/minFeatureSize" value="3"/>
<property key="labeling/multilineAlign" value="4294967295"/>
<property key="labeling/multilineHeight" value="1"/>
<property key="labeling/namedStyle" value="Bold"/>
<property key="labeling/obstacle" value="false"/>
<property key="labeling/obstacleFactor" value="0"/>
<property key="labeling/obstacleType" value="0"/>
<property key="labeling/offsetType" value="0"/>
<property key="labeling/placeDirectionSymbol" value="0"/>
<property key="labeling/placement" value="1"/>
<property key="labeling/placementFlags" value="7"/>
<property key="labeling/plussign" value="false"/>
<property key="labeling/predefinedPositionOrder" value="TR,TL,BR,BL,R,L,TSR,BSR"/>
<property key="labeling/preserveRotation" value="true"/>
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
<property key="labeling/priority" value="5"/>
<property key="labeling/quadOffset" value="1"/>
<property key="labeling/repeatDistance" value="0"/>
<property key="labeling/repeatDistanceMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/repeatDistanceUnit" value="1"/>
<property key="labeling/reverseDirectionSymbol" value="false"/>
<property key="labeling/rightDirectionSymbol" value=">"/>
<property key="labeling/scaleMax" value="35000000"/>
<property key="labeling/scaleMin" value="1"/>
<property key="labeling/scaleVisibility" value="true"/>
<property key="labeling/shadowBlendMode" value="6"/>
<property key="labeling/shadowColorB" value="0"/>
<property key="labeling/shadowColorG" value="0"/>
<property key="labeling/shadowColorR" value="0"/>
<property key="labeling/shadowDraw" value="false"/>
<property key="labeling/shadowOffsetAngle" value="135"/>
<property key="labeling/shadowOffsetDist" value="1"/>
<property key="labeling/shadowOffsetGlobal" value="true"/>
<property key="labeling/shadowOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowOffsetUnits" value="1"/>
<property key="labeling/shadowRadius" value="1.5"/>
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
<property key="labeling/shadowRadiusMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowRadiusUnits" value="1"/>
<property key="labeling/shadowScale" value="100"/>
<property key="labeling/shadowTransparency" value="30"/>
<property key="labeling/shadowUnder" value="0"/>
<property key="labeling/shapeBlendMode" value="0"/>
<property key="labeling/shapeBorderColorA" value="255"/>
<property key="labeling/shapeBorderColorB" value="128"/>
<property key="labeling/shapeBorderColorG" value="128"/>
<property key="labeling/shapeBorderColorR" value="128"/>
<property key="labeling/shapeBorderWidth" value="0"/>
<property key="labeling/shapeBorderWidthMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeBorderWidthUnits" value="1"/>
<property key="labeling/shapeDraw" value="false"/>
<property key="labeling/shapeFillColorA" value="255"/>
<property key="labeling/shapeFillColorB" value="255"/>
<property key="labeling/shapeFillColorG" value="255"/>
<property key="labeling/shapeFillColorR" value="255"/>
<property key="labeling/shapeJoinStyle" value="64"/>
<property key="labeling/shapeOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeOffsetUnits" value="1"/>
<property key="labeling/shapeOffsetX" value="0"/>
<property key="labeling/shapeOffsetY" value="0"/>
<property key="labeling/shapeRadiiMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeRadiiUnits" value="1"/>
<property key="labeling/shapeRadiiX" value="0"/>
<property key="labeling/shapeRadiiY" value="0"/>
<property key="labeling/shapeRotation" value="0"/>
<property key="labeling/shapeRotationType" value="0"/>
<property key="labeling/shapeSVGFile" value=""/>
<property key="labeling/shapeSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeSizeType" value="0"/>
<property key="labeling/shapeSizeUnits" value="1"/>
<property key="labeling/shapeSizeX" value="0"/>
<property key="labeling/shapeSizeY" value="0"/>
<property key="labeling/shapeTransparency" value="0"/>
<property key="labeling/shapeType" value="0"/>
<property key="labeling/substitutions" value="&lt;substitutions/>"/>
<property key="labeling/textColorA" value="255"/>
<property key="labeling/textColorB" value="0"/>
<property key="labeling/textColorG" value="0"/>
<property key="labeling/textColorR" value="0"/>
<property key="labeling/textTransp" value="0"/>
<property key="labeling/upsidedownLabels" value="2"/>
<property key="labeling/useSubstitutions" value="false"/>
<property key="labeling/wrapChar" value=""/>
<property key="labeling/xOffset" value="0"/>
<property key="labeling/yOffset" value="0"/>
<property key="labeling/zIndex" value="1"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerTransparency>0</layerTransparency>
<displayfield>name</displayfield>
<label>0</label>
<labelattributes>
<label fieldname="" text="<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"/>
<family fieldname="" name="MS Shell Dlg 2"/>
<size fieldname="" units="pt" value="12"/>
<bold fieldname="" on="0"/>
<italic fieldname="" on="0"/>
<underline fieldname="" on="0"/>
<strikeout fieldname="" on="0"/>
<color fieldname="" red="0" blue="0" green="0"/>
<x fieldname=""/>
<y fieldname=""/>
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
<angle fieldname="" value="0" auto="0"/>
<alignment fieldname="" value="center"/>
<buffercolor fieldname="" red="255" blue="255" green="255"/>
<buffersize fieldname="" units="pt" value="1"/>
<bufferenabled fieldname="" on=""/>
<multilineenabled fieldname="" on=""/>
<selectedonly on=""/>
</labelattributes>
<SingleCategoryDiagramRenderer diagramType="Histogram" sizeLegend="0" attributeLegend="1">
<DiagramCategory penColor="#000000" labelPlacementMethod="XHeight" penWidth="0" diagramOrientation="Up" sizeScale="0,0,0,0,0,0" minimumSize="0" barWidth="5" penAlpha="255" maxScaleDenominator="1e+08" backgroundColor="#ffffff" transparency="0" width="15" scaleDependency="Area" backgroundAlpha="255" angleOffset="1440" scaleBasedVisibility="0" enabled="0" height="15" lineSizeScale="0,0,0,0,0,0" sizeType="MM" lineSizeType="MM" minScaleDenominator="inf">
<fontProperties description="MS Shell Dlg 2,7.8,-1,5,50,0,0,0,0,0" style=""/>
<attribute field="" color="#000000" label=""/>
</DiagramCategory>
<symbol alpha="1" clip_to_extent="1" type="marker" name="sizeSymbol">
<layer pass="0" class="SimpleMarker" locked="0">
<prop k="angle" v="0"/>
<prop k="color" v="255,0,0,255"/>
<prop k="horizontal_anchor_point" v="1"/>
<prop k="joinstyle" v="bevel"/>
<prop k="name" v="circle"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0"/>
<prop k="outline_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
</layer>
</symbol>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings yPosColumn="-1" showColumn="-1" linePlacementFlags="10" placement="0" dist="0" xPosColumn="-1" priority="0" obstacle="0" zIndex="0" showAll="1"/>
<annotationform>.</annotationform>
<aliases>
<alias field="country_id" index="0" name=""/>
<alias field="region_id" index="1" name=""/>
<alias field="locust_type_id" index="2" name=""/>
<alias field="name" index="3" name=""/>
<alias field="percent" index="4" name=""/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<attributeactions default="-1"/>
<attributetableconfig actionWidgetStyle="dropDown" sortExpression="" sortOrder="762605167">
<columns>
<column width="-1" hidden="0" type="field" name="country_id"/>
<column width="-1" hidden="0" type="field" name="region_id"/>
<column width="-1" hidden="0" type="field" name="locust_type_id"/>
<column width="-1" hidden="0" type="field" name="name"/>
<column width="-1" hidden="0" type="field" name="percent"/>
<column width="-1" hidden="1" type="actions"/>
</columns>
</attributetableconfig>
<editform>.</editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath>.</editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.
Use this function to add extra logic to your forms.
Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<widgets/>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
<defaults>
<default field="country_id" expression=""/>
<default field="region_id" expression=""/>
<default field="locust_type_id" expression=""/>
<default field="name" expression=""/>
<default field="percent" expression=""/>
</defaults>
<previewExpression></previewExpression>
</maplayer>
</projectlayers>
<properties>
<Measurement>
<DistanceUnits type="QString">meters</DistanceUnits>
<AreaUnits type="QString">m2</AreaUnits>
</Measurement>
<SpatialRefSys>
<ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String>
<ProjectCrs type="QString">EPSG:4326</ProjectCrs>
<ProjectCRSID type="int">3452</ProjectCRSID>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<PAL>
<SearchMethod type="int">0</SearchMethod>
<ShowingShadowRects type="bool">false</ShowingShadowRects>
<CandidatesPolygon type="int">30</CandidatesPolygon>
<ShowingCandidates type="bool">false</ShowingCandidates>
<DrawRectOnly type="bool">false</DrawRectOnly>
<ShowingPartialsLabels type="bool">true</ShowingPartialsLabels>
<CandidatesLine type="int">50</CandidatesLine>
<CandidatesPoint type="int">16</CandidatesPoint>
<ShowingAllLabels type="bool">true</ShowingAllLabels>
<DrawOutlineLabels type="bool">false</DrawOutlineLabels>
</PAL>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<Gui>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
</Gui>
<Digitizing>
<DefaultSnapToleranceUnit type="int">2</DefaultSnapToleranceUnit>
<LayerSnappingList type="QStringList">
<value>view_frmlocustinfo_p2r_${year}20170221133600806</value>
</LayerSnappingList>
<LayerSnappingEnabledList type="QStringList">
<value>disabled</value>
</LayerSnappingEnabledList>
<SnappingMode type="QString">current_layer</SnappingMode>
<AvoidIntersectionsList type="QStringList"/>
<LayerSnappingToleranceUnitList type="QStringList">
<value>2</value>
</LayerSnappingToleranceUnitList>
<LayerSnapToList type="QStringList">
<value>to_vertex_and_segment</value>
</LayerSnapToList>
<DefaultSnapType type="QString">off</DefaultSnapType>
<DefaultSnapTolerance type="double">0</DefaultSnapTolerance>
<LayerSnappingToleranceList type="QStringList">
<value>0.000000</value>
</LayerSnappingToleranceList>
</Digitizing>
<PositionPrecision>
<DecimalPlaces type="int">2</DecimalPlaces>
<Automatic type="bool">true</Automatic>
</PositionPrecision>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
</properties>
<visibility-presets/>
</qgis>

View File

@ -0,0 +1,478 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" version="2.18.3">
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<layer-tree-group expanded="1" checked="Qt::PartiallyChecked" name="">
<customproperties/>
<layer-tree-layer expanded="1" checked="Qt::Checked" id="view_frmlocustinfo_p3_201520170221141235646" name="trt('Maps_of_treated_areas_above_ET')">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer expanded="1" providerKey="" checked="Qt::Unchecked" id="OpenLayers_plugin_layer20170821155911549" source="" name="Bing Aerial with labels">
<customproperties/>
</layer-tree-layer>
</layer-tree-group>
<relations/>
<mapcanvas>
<units>meters</units>
<extent>
<xmin>4606484.6726676719263196</xmin>
<ymin>3728012.39886604063212872</ymin>
<xmax>9866330.61264913156628609</xmax>
<ymax>8074944.57324538938701153</ymax>
</extent>
<rotation>0</rotation>
<projections>1</projections>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<layer_coordinate_transform_info>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:4326" srcDatumTransform="-1" destDatumTransform="-1" layerid="view_frmlocustinfo_p3_201520170221141235646"/>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:3857" srcDatumTransform="-1" destDatumTransform="-1" layerid="OpenLayers_plugin_layer20170821155911549"/>
</layer_coordinate_transform_info>
</mapcanvas>
<layer-tree-canvas>
<custom-order enabled="0">
<item>view_frmlocustinfo_p3_201520170221141235646</item>
<item>OpenStreetMap20170221162957823</item>
</custom-order>
</layer-tree-canvas>
<legend updateDrawingOrder="true">
<legendlayer drawingOrder="-1" open="true" checked="Qt::Checked" name="trt('Maps_of_treated_areas_above_ET')" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="view_frmlocustinfo_p3_201520170221141235646" visible="1"/>
</filegroup>
</legendlayer>
<legendlayer drawingOrder="-1" open="true" checked="Qt::Unchecked" name="Bing Aerial with labels" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="OpenLayers_plugin_layer20170821155911549" visible="0"/>
</filegroup>
</legendlayer>
</legend>
<projectlayers>
<maplayer simplifyAlgorithm="0" minimumScale="0" maximumScale="1e+08" simplifyDrawingHints="1" readOnly="0" minLabelScale="0" maxLabelScale="1e+08" simplifyDrawingTol="1" geometry="Polygon" simplifyMaxScale="1" type="vector" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
<extent>
<xmin>-180</xmin>
<ymin>38.39295510000000178</ymin>
<xmax>180</xmax>
<ymax>82.05862320000009902</ymax>
</extent>
<id>view_frmlocustinfo_p3_201520170221141235646</id>
<datasource>dbname='CCALM' host=ccalm.org port=5432 user='guest' password='guest' sslmode=disable key='region_id' estimatedmetadata=true srid=4326 type=MultiPolygon table="main"."view_frmlocustinfo_p3_${year}" (geom) sql=${sql}</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>trt('Maps_of_treated_areas_above_ET')</layername>
<srs>
<spatialrefsys>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</srs>
<provider encoding="System">postgres</provider>
<previewExpression>COALESCE( "name", '&lt;NULL>' )</previewExpression>
<vectorjoins/>
<layerDependencies/>
<expressionfields/>
<defaults>
<default field="country_id" expression=""/>
<default field="region_id" expression=""/>
<default field="locust_type_id" expression=""/>
<default field="name" expression=""/>
<default field="percent" expression=""/>
</defaults>
<map-layer-style-manager current="">
<map-layer-style name=""/>
</map-layer-style-manager>
<edittypes>
<edittype widgetv2type="TextEdit" name="country_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="region_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="locust_type_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="name">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="percent">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
</edittypes>
<renderer-v2 forceraster="0" symbollevels="0" type="RuleRenderer" enableorderby="0">
<rules key="{4228a59e-abca-4465-b39b-83a899e32c5b}">
<rule filter=" &quot;percent&quot; > 15" key="{fad70a76-868e-45d5-a7d0-88e1b6b670c6}" symbol="0" label=">15% trt('Increase')"/>
<rule filter=" &quot;percent&quot; &lt; 15 AND &quot;percent&quot; > -15" key="{52cc3773-b4d3-4790-aaf0-eee5e70f5cad}" symbol="2" label=">=15% trt('and') &lt;=15% trt('On_the_same_level')"/>
<rule filter=" &quot;percent&quot; &lt; -15" key="{f9d3135a-22bc-481f-96a9-ea2743e1bb3c}" symbol="1" label="&lt;15% trt('Decrease')"/>
<rule filter=" &quot;percent&quot; is null" key="{c017f2c4-f56f-48a8-bbc4-987fa0f239a9}" symbol="3" label="trt('No_data')"/>
</rules>
<symbols>
<symbol alpha="0.960784" clip_to_extent="1" type="fill" name="0">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,0,0,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="2">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,238,0,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="1">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="0,255,76,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="3">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="150,150,150,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
</symbols>
</renderer-v2>
<labeling type="simple"/>
<customproperties>
<property key="embeddedWidgets/count" value="0"/>
<property key="labeling" value="pal"/>
<property key="labeling/addDirectionSymbol" value="false"/>
<property key="labeling/angleOffset" value="0"/>
<property key="labeling/blendMode" value="0"/>
<property key="labeling/bufferBlendMode" value="0"/>
<property key="labeling/bufferColorA" value="255"/>
<property key="labeling/bufferColorB" value="255"/>
<property key="labeling/bufferColorG" value="255"/>
<property key="labeling/bufferColorR" value="255"/>
<property key="labeling/bufferDraw" value="true"/>
<property key="labeling/bufferJoinStyle" value="128"/>
<property key="labeling/bufferNoFill" value="false"/>
<property key="labeling/bufferSize" value="1"/>
<property key="labeling/bufferSizeInMapUnits" value="false"/>
<property key="labeling/bufferSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/bufferTransp" value="0"/>
<property key="labeling/centroidInside" value="true"/>
<property key="labeling/centroidWhole" value="false"/>
<property key="labeling/decimals" value="3"/>
<property key="labeling/displayAll" value="false"/>
<property key="labeling/dist" value="0"/>
<property key="labeling/distInMapUnits" value="false"/>
<property key="labeling/distMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/drawLabels" value="true"/>
<property key="labeling/enabled" value="true"/>
<property key="labeling/fieldName" value=" &quot;name&quot;||'\n'||&quot;percent&quot; || '%'"/>
<property key="labeling/fitInPolygonOnly" value="true"/>
<property key="labeling/fontCapitals" value="0"/>
<property key="labeling/fontFamily" value="Arial"/>
<property key="labeling/fontItalic" value="false"/>
<property key="labeling/fontLetterSpacing" value="0"/>
<property key="labeling/fontLimitPixelSize" value="false"/>
<property key="labeling/fontMaxPixelSize" value="10000"/>
<property key="labeling/fontMinPixelSize" value="3"/>
<property key="labeling/fontSize" value="7"/>
<property key="labeling/fontSizeInMapUnits" value="false"/>
<property key="labeling/fontSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/fontStrikeout" value="false"/>
<property key="labeling/fontUnderline" value="false"/>
<property key="labeling/fontWeight" value="75"/>
<property key="labeling/fontWordSpacing" value="0"/>
<property key="labeling/formatNumbers" value="false"/>
<property key="labeling/isExpression" value="true"/>
<property key="labeling/labelOffsetInMapUnits" value="false"/>
<property key="labeling/labelOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/labelPerPart" value="false"/>
<property key="labeling/leftDirectionSymbol" value="&lt;"/>
<property key="labeling/limitNumLabels" value="false"/>
<property key="labeling/maxCurvedCharAngleIn" value="25"/>
<property key="labeling/maxCurvedCharAngleOut" value="-25"/>
<property key="labeling/maxNumLabels" value="2000"/>
<property key="labeling/mergeLines" value="false"/>
<property key="labeling/minFeatureSize" value="0"/>
<property key="labeling/multilineAlign" value="4294967295"/>
<property key="labeling/multilineHeight" value="1"/>
<property key="labeling/namedStyle" value="Bold"/>
<property key="labeling/obstacle" value="false"/>
<property key="labeling/obstacleFactor" value="1"/>
<property key="labeling/obstacleType" value="0"/>
<property key="labeling/offsetType" value="0"/>
<property key="labeling/placeDirectionSymbol" value="0"/>
<property key="labeling/placement" value="1"/>
<property key="labeling/placementFlags" value="10"/>
<property key="labeling/plussign" value="false"/>
<property key="labeling/predefinedPositionOrder" value="TR,TL,BR,BL,R,L,TSR,BSR"/>
<property key="labeling/preserveRotation" value="false"/>
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
<property key="labeling/priority" value="0"/>
<property key="labeling/quadOffset" value="4"/>
<property key="labeling/repeatDistance" value="0"/>
<property key="labeling/repeatDistanceMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/repeatDistanceUnit" value="1"/>
<property key="labeling/reverseDirectionSymbol" value="false"/>
<property key="labeling/rightDirectionSymbol" value=">"/>
<property key="labeling/scaleMax" value="35000000"/>
<property key="labeling/scaleMin" value="1"/>
<property key="labeling/scaleVisibility" value="true"/>
<property key="labeling/shadowBlendMode" value="6"/>
<property key="labeling/shadowColorB" value="0"/>
<property key="labeling/shadowColorG" value="0"/>
<property key="labeling/shadowColorR" value="0"/>
<property key="labeling/shadowDraw" value="false"/>
<property key="labeling/shadowOffsetAngle" value="135"/>
<property key="labeling/shadowOffsetDist" value="1"/>
<property key="labeling/shadowOffsetGlobal" value="true"/>
<property key="labeling/shadowOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowOffsetUnits" value="1"/>
<property key="labeling/shadowRadius" value="1.5"/>
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
<property key="labeling/shadowRadiusMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowRadiusUnits" value="1"/>
<property key="labeling/shadowScale" value="100"/>
<property key="labeling/shadowTransparency" value="30"/>
<property key="labeling/shadowUnder" value="0"/>
<property key="labeling/shapeBlendMode" value="0"/>
<property key="labeling/shapeBorderColorA" value="255"/>
<property key="labeling/shapeBorderColorB" value="128"/>
<property key="labeling/shapeBorderColorG" value="128"/>
<property key="labeling/shapeBorderColorR" value="128"/>
<property key="labeling/shapeBorderWidth" value="0"/>
<property key="labeling/shapeBorderWidthMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeBorderWidthUnits" value="1"/>
<property key="labeling/shapeDraw" value="false"/>
<property key="labeling/shapeFillColorA" value="255"/>
<property key="labeling/shapeFillColorB" value="255"/>
<property key="labeling/shapeFillColorG" value="255"/>
<property key="labeling/shapeFillColorR" value="255"/>
<property key="labeling/shapeJoinStyle" value="64"/>
<property key="labeling/shapeOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeOffsetUnits" value="1"/>
<property key="labeling/shapeOffsetX" value="0"/>
<property key="labeling/shapeOffsetY" value="0"/>
<property key="labeling/shapeRadiiMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeRadiiUnits" value="1"/>
<property key="labeling/shapeRadiiX" value="0"/>
<property key="labeling/shapeRadiiY" value="0"/>
<property key="labeling/shapeRotation" value="0"/>
<property key="labeling/shapeRotationType" value="0"/>
<property key="labeling/shapeSVGFile" value=""/>
<property key="labeling/shapeSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeSizeType" value="0"/>
<property key="labeling/shapeSizeUnits" value="1"/>
<property key="labeling/shapeSizeX" value="0"/>
<property key="labeling/shapeSizeY" value="0"/>
<property key="labeling/shapeTransparency" value="0"/>
<property key="labeling/shapeType" value="0"/>
<property key="labeling/substitutions" value="&lt;substitutions/>"/>
<property key="labeling/textColorA" value="255"/>
<property key="labeling/textColorB" value="0"/>
<property key="labeling/textColorG" value="0"/>
<property key="labeling/textColorR" value="0"/>
<property key="labeling/textTransp" value="0"/>
<property key="labeling/upsidedownLabels" value="0"/>
<property key="labeling/useSubstitutions" value="false"/>
<property key="labeling/wrapChar" value=""/>
<property key="labeling/xOffset" value="0.2"/>
<property key="labeling/yOffset" value="0.2"/>
<property key="labeling/zIndex" value="0"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerTransparency>0</layerTransparency>
<displayfield>name</displayfield>
<label>0</label>
<labelattributes>
<label fieldname="" text="Подпись"/>
<family fieldname="" name="MS Shell Dlg 2"/>
<size fieldname="" units="pt" value="12"/>
<bold fieldname="" on="0"/>
<italic fieldname="" on="0"/>
<underline fieldname="" on="0"/>
<strikeout fieldname="" on="0"/>
<color fieldname="" red="0" blue="0" green="0"/>
<x fieldname=""/>
<y fieldname=""/>
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
<angle fieldname="" value="0" auto="0"/>
<alignment fieldname="" value="center"/>
<buffercolor fieldname="" red="255" blue="255" green="255"/>
<buffersize fieldname="" units="pt" value="1"/>
<bufferenabled fieldname="" on=""/>
<multilineenabled fieldname="" on=""/>
<selectedonly on=""/>
</labelattributes>
<SingleCategoryDiagramRenderer diagramType="Histogram" sizeLegend="0" attributeLegend="1">
<DiagramCategory penColor="#000000" labelPlacementMethod="XHeight" penWidth="0" diagramOrientation="Up" sizeScale="0,0,0,0,0,0" minimumSize="0" barWidth="5" penAlpha="255" maxScaleDenominator="1e+08" backgroundColor="#ffffff" transparency="0" width="15" scaleDependency="Area" backgroundAlpha="255" angleOffset="1440" scaleBasedVisibility="0" enabled="0" height="15" lineSizeScale="0,0,0,0,0,0" sizeType="MM" lineSizeType="MM" minScaleDenominator="inf">
<fontProperties description="MS Shell Dlg 2,7.8,-1,5,50,0,0,0,0,0" style=""/>
<attribute field="" color="#000000" label=""/>
</DiagramCategory>
<symbol alpha="1" clip_to_extent="1" type="marker" name="sizeSymbol">
<layer pass="0" class="SimpleMarker" locked="0">
<prop k="angle" v="0"/>
<prop k="color" v="255,0,0,255"/>
<prop k="horizontal_anchor_point" v="1"/>
<prop k="joinstyle" v="bevel"/>
<prop k="name" v="circle"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0"/>
<prop k="outline_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
</layer>
</symbol>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings yPosColumn="-1" showColumn="-1" linePlacementFlags="10" placement="0" dist="0" xPosColumn="-1" priority="0" obstacle="0" zIndex="0" showAll="1"/>
<annotationform>.</annotationform>
<aliases>
<alias field="country_id" index="0" name=""/>
<alias field="region_id" index="1" name=""/>
<alias field="locust_type_id" index="2" name=""/>
<alias field="name" index="3" name=""/>
<alias field="percent" index="4" name=""/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<attributeactions default="-1"/>
<attributetableconfig actionWidgetStyle="dropDown" sortExpression="&quot;name&quot;" sortOrder="0">
<columns>
<column width="-1" hidden="0" type="field" name="country_id"/>
<column width="-1" hidden="0" type="field" name="region_id"/>
<column width="-1" hidden="0" type="field" name="locust_type_id"/>
<column width="394" hidden="0" type="field" name="name"/>
<column width="212" hidden="0" type="field" name="percent"/>
<column width="-1" hidden="1" type="actions"/>
</columns>
</attributetableconfig>
<editform>.</editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath>.</editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.
Use this function to add extra logic to your forms.
Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<widgets/>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
</maplayer>
</projectlayers>
<properties>
<Measurement>
<DistanceUnits type="QString">meters</DistanceUnits>
<AreaUnits type="QString">m2</AreaUnits>
</Measurement>
<SpatialRefSys>
<ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String>
<ProjectCrs type="QString">EPSG:4326</ProjectCrs>
<ProjectCRSID type="int">3452</ProjectCRSID>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<Gui>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
</Gui>
<Digitizing>
<DefaultSnapToleranceUnit type="int">2</DefaultSnapToleranceUnit>
<SnappingMode type="QString">current_layer</SnappingMode>
<DefaultSnapType type="QString">off</DefaultSnapType>
<DefaultSnapTolerance type="double">0</DefaultSnapTolerance>
</Digitizing>
<PositionPrecision>
<DecimalPlaces type="int">2</DecimalPlaces>
<Automatic type="bool">true</Automatic>
</PositionPrecision>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
</properties>
<visibility-presets/>
</qgis>

View File

@ -0,0 +1,508 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" version="2.18.3">
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<layer-tree-group expanded="1" checked="Qt::PartiallyChecked" name="">
<customproperties/>
<layer-tree-layer expanded="1" checked="Qt::Checked" id="view_frmlocustinfo_p3r_201520170221141235646" name="trt('Maps_of_treated_areas_above_ET')">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer expanded="1" providerKey="" checked="Qt::Unchecked" id="OpenLayers_plugin_layer20170821155911549" source="" name="Bing Aerial with labels">
<customproperties/>
</layer-tree-layer>
</layer-tree-group>
<relations/>
<mapcanvas>
<units>meters</units>
<extent>
<xmin>4606484.6726676719263196</xmin>
<ymin>3728012.39886604063212872</ymin>
<xmax>9866330.61264913156628609</xmax>
<ymax>8074944.57324538938701153</ymax>
</extent>
<rotation>0</rotation>
<projections>1</projections>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<layer_coordinate_transform_info>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:4326" srcDatumTransform="-1" destDatumTransform="-1" layerid="view_frmlocustinfo_p3r_201520170221141235646"/>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:3857" srcDatumTransform="-1" destDatumTransform="-1" layerid="OpenLayers_plugin_layer20170821155911549"/>
</layer_coordinate_transform_info>
</mapcanvas>
<layer-tree-canvas>
<custom-order enabled="0">
<item>view_frmlocustinfo_p3r_201520170221141235646</item>
<item>OpenStreetMap20170221162957823</item>
</custom-order>
</layer-tree-canvas>
<legend updateDrawingOrder="true">
<legendlayer drawingOrder="-1" open="true" checked="Qt::Checked" name="trt('Maps_of_treated_areas_above_ET')" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="view_frmlocustinfo_p3r_201520170221141235646" visible="1"/>
</filegroup>
</legendlayer>
<legendlayer drawingOrder="-1" open="true" checked="Qt::Unchecked" name="Bing Aerial with labels" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="OpenLayers_plugin_layer20170821155911549" visible="0"/>
</filegroup>
</legendlayer>
</legend>
<projectlayers>
<maplayer minimumScale="0" maximumScale="1e+08" type="plugin" hasScaleBasedVisibilityFlag="0" name="openlayers">
<extent>
<xmin>-20037508.33999999985098839</xmin>
<ymin>-20037508.33999999985098839</ymin>
<xmax>20037508.33999999985098839</xmax>
<ymax>20037508.33999999985098839</ymax>
</extent>
<id>OpenLayers_plugin_layer20170821155911549</id>
<datasource></datasource>
<keywordList>
<value></value>
</keywordList>
<layername>Bing Aerial with labels</layername>
<srs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<customproperties>
<property key="ol_layer_type" value="Bing Aerial with labels"/>
</customproperties>
</maplayer>
<maplayer simplifyAlgorithm="0" minimumScale="0" maximumScale="1e+08" simplifyDrawingHints="1" readOnly="0" minLabelScale="0" maxLabelScale="1e+08" simplifyDrawingTol="1" geometry="Polygon" simplifyMaxScale="1" type="vector" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
<extent>
<xmin>-180</xmin>
<ymin>38.39295510000000178</ymin>
<xmax>180</xmax>
<ymax>82.05862320000009902</ymax>
</extent>
<id>view_frmlocustinfo_p3r_201520170221141235646</id>
<datasource>dbname='CCALM' host=ccalm.org port=5432 user='guest' password='guest' sslmode=disable key='region_id' estimatedmetadata=true srid=4326 type=MultiPolygon table="main"."view_frmlocustinfo_p3r_${year}" (geom) sql=${sql}</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>trt('Maps_of_treated_areas_above_ET')</layername>
<srs>
<spatialrefsys>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</srs>
<provider encoding="System">postgres</provider>
<previewExpression>COALESCE( "name", '&lt;NULL>' )</previewExpression>
<vectorjoins/>
<layerDependencies/>
<expressionfields/>
<defaults>
<default field="country_id" expression=""/>
<default field="region_id" expression=""/>
<default field="locust_type_id" expression=""/>
<default field="name" expression=""/>
<default field="percent" expression=""/>
</defaults>
<map-layer-style-manager current="">
<map-layer-style name=""/>
</map-layer-style-manager>
<edittypes>
<edittype widgetv2type="TextEdit" name="country_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="region_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="locust_type_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="name">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="percent">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
</edittypes>
<renderer-v2 forceraster="0" symbollevels="0" type="RuleRenderer" enableorderby="0">
<rules key="{4228a59e-abca-4465-b39b-83a899e32c5b}">
<rule filter=" &quot;percent&quot; > 15" key="{fad70a76-868e-45d5-a7d0-88e1b6b670c6}" symbol="0" label=">15% trt('Increase')"/>
<rule filter=" &quot;percent&quot; &lt; 15 AND &quot;percent&quot; > -15" key="{52cc3773-b4d3-4790-aaf0-eee5e70f5cad}" symbol="2" label=">=15% trt('and') &lt;=15% trt('On_the_same_level')"/>
<rule filter=" &quot;percent&quot; &lt; -15" key="{f9d3135a-22bc-481f-96a9-ea2743e1bb3c}" symbol="1" label="&lt;15% trt('Decrease')"/>
<rule filter=" &quot;percent&quot; is null" key="{c017f2c4-f56f-48a8-bbc4-987fa0f239a9}" symbol="3" label="trt('No_data')"/>
</rules>
<symbols>
<symbol alpha="0.960784" clip_to_extent="1" type="fill" name="0">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,0,0,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="2">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,238,0,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="1">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="0,255,76,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="3">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="150,150,150,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
</symbols>
</renderer-v2>
<labeling type="simple"/>
<customproperties>
<property key="embeddedWidgets/count" value="0"/>
<property key="labeling" value="pal"/>
<property key="labeling/addDirectionSymbol" value="false"/>
<property key="labeling/angleOffset" value="0"/>
<property key="labeling/blendMode" value="0"/>
<property key="labeling/bufferBlendMode" value="0"/>
<property key="labeling/bufferColorA" value="255"/>
<property key="labeling/bufferColorB" value="255"/>
<property key="labeling/bufferColorG" value="255"/>
<property key="labeling/bufferColorR" value="255"/>
<property key="labeling/bufferDraw" value="true"/>
<property key="labeling/bufferJoinStyle" value="128"/>
<property key="labeling/bufferNoFill" value="false"/>
<property key="labeling/bufferSize" value="1"/>
<property key="labeling/bufferSizeInMapUnits" value="false"/>
<property key="labeling/bufferSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/bufferTransp" value="0"/>
<property key="labeling/centroidInside" value="true"/>
<property key="labeling/centroidWhole" value="false"/>
<property key="labeling/decimals" value="3"/>
<property key="labeling/displayAll" value="false"/>
<property key="labeling/dist" value="0"/>
<property key="labeling/distInMapUnits" value="false"/>
<property key="labeling/distMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/drawLabels" value="true"/>
<property key="labeling/enabled" value="true"/>
<property key="labeling/fieldName" value=" &quot;name&quot;||'\n'||&quot;percent&quot; || '%'"/>
<property key="labeling/fitInPolygonOnly" value="true"/>
<property key="labeling/fontCapitals" value="0"/>
<property key="labeling/fontFamily" value="Arial"/>
<property key="labeling/fontItalic" value="false"/>
<property key="labeling/fontLetterSpacing" value="0"/>
<property key="labeling/fontLimitPixelSize" value="false"/>
<property key="labeling/fontMaxPixelSize" value="10000"/>
<property key="labeling/fontMinPixelSize" value="3"/>
<property key="labeling/fontSize" value="7"/>
<property key="labeling/fontSizeInMapUnits" value="false"/>
<property key="labeling/fontSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/fontStrikeout" value="false"/>
<property key="labeling/fontUnderline" value="false"/>
<property key="labeling/fontWeight" value="75"/>
<property key="labeling/fontWordSpacing" value="0"/>
<property key="labeling/formatNumbers" value="false"/>
<property key="labeling/isExpression" value="true"/>
<property key="labeling/labelOffsetInMapUnits" value="false"/>
<property key="labeling/labelOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/labelPerPart" value="false"/>
<property key="labeling/leftDirectionSymbol" value="&lt;"/>
<property key="labeling/limitNumLabels" value="false"/>
<property key="labeling/maxCurvedCharAngleIn" value="25"/>
<property key="labeling/maxCurvedCharAngleOut" value="-25"/>
<property key="labeling/maxNumLabels" value="2000"/>
<property key="labeling/mergeLines" value="false"/>
<property key="labeling/minFeatureSize" value="0"/>
<property key="labeling/multilineAlign" value="4294967295"/>
<property key="labeling/multilineHeight" value="1"/>
<property key="labeling/namedStyle" value="Bold"/>
<property key="labeling/obstacle" value="false"/>
<property key="labeling/obstacleFactor" value="1"/>
<property key="labeling/obstacleType" value="0"/>
<property key="labeling/offsetType" value="0"/>
<property key="labeling/placeDirectionSymbol" value="0"/>
<property key="labeling/placement" value="1"/>
<property key="labeling/placementFlags" value="10"/>
<property key="labeling/plussign" value="false"/>
<property key="labeling/predefinedPositionOrder" value="TR,TL,BR,BL,R,L,TSR,BSR"/>
<property key="labeling/preserveRotation" value="false"/>
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
<property key="labeling/priority" value="0"/>
<property key="labeling/quadOffset" value="4"/>
<property key="labeling/repeatDistance" value="0"/>
<property key="labeling/repeatDistanceMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/repeatDistanceUnit" value="1"/>
<property key="labeling/reverseDirectionSymbol" value="false"/>
<property key="labeling/rightDirectionSymbol" value=">"/>
<property key="labeling/scaleMax" value="35000000"/>
<property key="labeling/scaleMin" value="1"/>
<property key="labeling/scaleVisibility" value="true"/>
<property key="labeling/shadowBlendMode" value="6"/>
<property key="labeling/shadowColorB" value="0"/>
<property key="labeling/shadowColorG" value="0"/>
<property key="labeling/shadowColorR" value="0"/>
<property key="labeling/shadowDraw" value="false"/>
<property key="labeling/shadowOffsetAngle" value="135"/>
<property key="labeling/shadowOffsetDist" value="1"/>
<property key="labeling/shadowOffsetGlobal" value="true"/>
<property key="labeling/shadowOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowOffsetUnits" value="1"/>
<property key="labeling/shadowRadius" value="1.5"/>
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
<property key="labeling/shadowRadiusMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowRadiusUnits" value="1"/>
<property key="labeling/shadowScale" value="100"/>
<property key="labeling/shadowTransparency" value="30"/>
<property key="labeling/shadowUnder" value="0"/>
<property key="labeling/shapeBlendMode" value="0"/>
<property key="labeling/shapeBorderColorA" value="255"/>
<property key="labeling/shapeBorderColorB" value="128"/>
<property key="labeling/shapeBorderColorG" value="128"/>
<property key="labeling/shapeBorderColorR" value="128"/>
<property key="labeling/shapeBorderWidth" value="0"/>
<property key="labeling/shapeBorderWidthMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeBorderWidthUnits" value="1"/>
<property key="labeling/shapeDraw" value="false"/>
<property key="labeling/shapeFillColorA" value="255"/>
<property key="labeling/shapeFillColorB" value="255"/>
<property key="labeling/shapeFillColorG" value="255"/>
<property key="labeling/shapeFillColorR" value="255"/>
<property key="labeling/shapeJoinStyle" value="64"/>
<property key="labeling/shapeOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeOffsetUnits" value="1"/>
<property key="labeling/shapeOffsetX" value="0"/>
<property key="labeling/shapeOffsetY" value="0"/>
<property key="labeling/shapeRadiiMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeRadiiUnits" value="1"/>
<property key="labeling/shapeRadiiX" value="0"/>
<property key="labeling/shapeRadiiY" value="0"/>
<property key="labeling/shapeRotation" value="0"/>
<property key="labeling/shapeRotationType" value="0"/>
<property key="labeling/shapeSVGFile" value=""/>
<property key="labeling/shapeSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeSizeType" value="0"/>
<property key="labeling/shapeSizeUnits" value="1"/>
<property key="labeling/shapeSizeX" value="0"/>
<property key="labeling/shapeSizeY" value="0"/>
<property key="labeling/shapeTransparency" value="0"/>
<property key="labeling/shapeType" value="0"/>
<property key="labeling/substitutions" value="&lt;substitutions/>"/>
<property key="labeling/textColorA" value="255"/>
<property key="labeling/textColorB" value="0"/>
<property key="labeling/textColorG" value="0"/>
<property key="labeling/textColorR" value="0"/>
<property key="labeling/textTransp" value="0"/>
<property key="labeling/upsidedownLabels" value="0"/>
<property key="labeling/useSubstitutions" value="false"/>
<property key="labeling/wrapChar" value=""/>
<property key="labeling/xOffset" value="0.2"/>
<property key="labeling/yOffset" value="0.2"/>
<property key="labeling/zIndex" value="0"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerTransparency>0</layerTransparency>
<displayfield>name</displayfield>
<label>0</label>
<labelattributes>
<label fieldname="" text="Подпись"/>
<family fieldname="" name="MS Shell Dlg 2"/>
<size fieldname="" units="pt" value="12"/>
<bold fieldname="" on="0"/>
<italic fieldname="" on="0"/>
<underline fieldname="" on="0"/>
<strikeout fieldname="" on="0"/>
<color fieldname="" red="0" blue="0" green="0"/>
<x fieldname=""/>
<y fieldname=""/>
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
<angle fieldname="" value="0" auto="0"/>
<alignment fieldname="" value="center"/>
<buffercolor fieldname="" red="255" blue="255" green="255"/>
<buffersize fieldname="" units="pt" value="1"/>
<bufferenabled fieldname="" on=""/>
<multilineenabled fieldname="" on=""/>
<selectedonly on=""/>
</labelattributes>
<SingleCategoryDiagramRenderer diagramType="Histogram" sizeLegend="0" attributeLegend="1">
<DiagramCategory penColor="#000000" labelPlacementMethod="XHeight" penWidth="0" diagramOrientation="Up" sizeScale="0,0,0,0,0,0" minimumSize="0" barWidth="5" penAlpha="255" maxScaleDenominator="1e+08" backgroundColor="#ffffff" transparency="0" width="15" scaleDependency="Area" backgroundAlpha="255" angleOffset="1440" scaleBasedVisibility="0" enabled="0" height="15" lineSizeScale="0,0,0,0,0,0" sizeType="MM" lineSizeType="MM" minScaleDenominator="inf">
<fontProperties description="MS Shell Dlg 2,7.8,-1,5,50,0,0,0,0,0" style=""/>
<attribute field="" color="#000000" label=""/>
</DiagramCategory>
<symbol alpha="1" clip_to_extent="1" type="marker" name="sizeSymbol">
<layer pass="0" class="SimpleMarker" locked="0">
<prop k="angle" v="0"/>
<prop k="color" v="255,0,0,255"/>
<prop k="horizontal_anchor_point" v="1"/>
<prop k="joinstyle" v="bevel"/>
<prop k="name" v="circle"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0"/>
<prop k="outline_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
</layer>
</symbol>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings yPosColumn="-1" showColumn="-1" linePlacementFlags="10" placement="0" dist="0" xPosColumn="-1" priority="0" obstacle="0" zIndex="0" showAll="1"/>
<annotationform>.</annotationform>
<aliases>
<alias field="country_id" index="0" name=""/>
<alias field="region_id" index="1" name=""/>
<alias field="locust_type_id" index="2" name=""/>
<alias field="name" index="3" name=""/>
<alias field="percent" index="4" name=""/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<attributeactions default="-1"/>
<attributetableconfig actionWidgetStyle="dropDown" sortExpression="&quot;name&quot;" sortOrder="0">
<columns>
<column width="-1" hidden="0" type="field" name="country_id"/>
<column width="-1" hidden="0" type="field" name="region_id"/>
<column width="-1" hidden="0" type="field" name="locust_type_id"/>
<column width="394" hidden="0" type="field" name="name"/>
<column width="212" hidden="0" type="field" name="percent"/>
<column width="-1" hidden="1" type="actions"/>
</columns>
</attributetableconfig>
<editform>.</editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath>.</editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.
Use this function to add extra logic to your forms.
Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<widgets/>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
</maplayer>
</projectlayers>
<properties>
<Measurement>
<DistanceUnits type="QString">meters</DistanceUnits>
<AreaUnits type="QString">m2</AreaUnits>
</Measurement>
<SpatialRefSys>
<ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String>
<ProjectCrs type="QString">EPSG:4326</ProjectCrs>
<ProjectCRSID type="int">3452</ProjectCRSID>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<Gui>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
</Gui>
<Digitizing>
<DefaultSnapToleranceUnit type="int">2</DefaultSnapToleranceUnit>
<SnappingMode type="QString">current_layer</SnappingMode>
<DefaultSnapType type="QString">off</DefaultSnapType>
<DefaultSnapTolerance type="double">0</DefaultSnapTolerance>
</Digitizing>
<PositionPrecision>
<DecimalPlaces type="int">2</DecimalPlaces>
<Automatic type="bool">true</Automatic>
</PositionPrecision>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
</properties>
<visibility-presets/>
</qgis>

View File

@ -0,0 +1,508 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" version="2.18.3">
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<layer-tree-group expanded="1" checked="Qt::PartiallyChecked" name="">
<customproperties/>
<layer-tree-layer expanded="1" checked="Qt::Checked" id="view_frmlocustinfo_p4_201520170221164520581" name="trt('Map_of_the_level_of_threat')">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer expanded="1" providerKey="" checked="Qt::Unchecked" id="OpenLayers_plugin_layer20170821155911549" source="" name="Bing Aerial with labels">
<customproperties/>
</layer-tree-layer>
</layer-tree-group>
<relations/>
<mapcanvas>
<units>meters</units>
<extent>
<xmin>4606484.6726676719263196</xmin>
<ymin>3728012.39886604063212872</ymin>
<xmax>9866330.61264913156628609</xmax>
<ymax>8074944.57324538938701153</ymax>
</extent>
<rotation>0</rotation>
<projections>1</projections>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<layer_coordinate_transform_info>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:4326" srcDatumTransform="-1" destDatumTransform="-1" layerid="view_frmlocustinfo_p4_201520170221164520581"/>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:3857" srcDatumTransform="-1" destDatumTransform="-1" layerid="OpenLayers_plugin_layer20170821155911549"/>
</layer_coordinate_transform_info>
</mapcanvas>
<layer-tree-canvas>
<custom-order enabled="0">
<item>view_frmlocustinfo_p4_201520170221164520581</item>
<item>OpenStreetMap20170221170817493</item>
</custom-order>
</layer-tree-canvas>
<legend updateDrawingOrder="true">
<legendlayer drawingOrder="-1" open="true" checked="Qt::Checked" name="trt('Map_of_the_level_of_threat')" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="view_frmlocustinfo_p4_201520170221164520581" visible="1"/>
</filegroup>
</legendlayer>
<legendlayer drawingOrder="-1" open="true" checked="Qt::Unchecked" name="Bing Aerial with labels" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="OpenLayers_plugin_layer20170821155911549" visible="0"/>
</filegroup>
</legendlayer>
</legend>
<projectlayers>
<maplayer minimumScale="0" maximumScale="1e+08" type="plugin" hasScaleBasedVisibilityFlag="0" name="openlayers">
<extent>
<xmin>-20037508.33999999985098839</xmin>
<ymin>-20037508.33999999985098839</ymin>
<xmax>20037508.33999999985098839</xmax>
<ymax>20037508.33999999985098839</ymax>
</extent>
<id>OpenLayers_plugin_layer20170821155911549</id>
<datasource></datasource>
<keywordList>
<value></value>
</keywordList>
<layername>Bing Aerial with labels</layername>
<srs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<customproperties>
<property key="ol_layer_type" value="Bing Aerial with labels"/>
</customproperties>
</maplayer>
<maplayer simplifyAlgorithm="0" minimumScale="0" maximumScale="1e+08" simplifyDrawingHints="1" readOnly="0" minLabelScale="0" maxLabelScale="1e+08" simplifyDrawingTol="1" geometry="Polygon" simplifyMaxScale="1" type="vector" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
<extent>
<xmin>-180</xmin>
<ymin>38.39295510000000178</ymin>
<xmax>180</xmax>
<ymax>82.05862320000009902</ymax>
</extent>
<id>view_frmlocustinfo_p4_201520170221164520581</id>
<datasource>dbname='CCALM' host=ccalm.org port=5432 user='guest' password='guest' sslmode=disable key='region_id' estimatedmetadata=true srid=4326 type=MultiPolygon table="main"."view_frmlocustinfo_p4_${year}" (geom) sql=${sql}</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>trt('Map_of_the_level_of_threat')</layername>
<srs>
<spatialrefsys>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</srs>
<provider encoding="System">postgres</provider>
<previewExpression></previewExpression>
<vectorjoins/>
<layerDependencies/>
<expressionfields/>
<defaults>
<default field="country_id" expression=""/>
<default field="region_id" expression=""/>
<default field="locust_type_id" expression=""/>
<default field="name" expression=""/>
<default field="percent" expression=""/>
</defaults>
<map-layer-style-manager current="">
<map-layer-style name=""/>
</map-layer-style-manager>
<edittypes>
<edittype widgetv2type="TextEdit" name="country_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="region_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="locust_type_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="name">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="percent">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
</edittypes>
<renderer-v2 forceraster="0" symbollevels="0" type="RuleRenderer" enableorderby="0">
<rules key="{d544320a-3c0f-4ff0-97cd-14e77a01f052}">
<rule description="" filter=" &quot;percent&quot; >= -25 AND &quot;percent&quot; &lt;= 25" key="{7c75fcc4-03a0-49be-a6e9-f1fd4612e11f}" symbol="0" label="trt('Normal/Multiyear_average_level')"/>
<rule description="" filter=" &quot;percent&quot; > 25 OR &quot;percent&quot; &lt; -25" key="{708b86f0-c637-43b1-b85b-823ad0a54776}" symbol="1" label="trt('Danger')"/>
<rule filter=" &quot;percent&quot; is null" key="{c017f2c4-f56f-48a8-bbc4-987fa0f239a9}" symbol="2" label="trt('No_data')"/>
</rules>
<symbols>
<symbol alpha="1" clip_to_extent="1" type="fill" name="0">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="0,255,76,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="1">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,0,0,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="2">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="150,150,150,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
</symbols>
</renderer-v2>
<labeling type="simple"/>
<customproperties>
<property key="embeddedWidgets/count" value="0"/>
<property key="labeling" value="pal"/>
<property key="labeling/addDirectionSymbol" value="false"/>
<property key="labeling/angleOffset" value="0"/>
<property key="labeling/blendMode" value="0"/>
<property key="labeling/bufferBlendMode" value="0"/>
<property key="labeling/bufferColorA" value="255"/>
<property key="labeling/bufferColorB" value="255"/>
<property key="labeling/bufferColorG" value="255"/>
<property key="labeling/bufferColorR" value="255"/>
<property key="labeling/bufferDraw" value="true"/>
<property key="labeling/bufferJoinStyle" value="128"/>
<property key="labeling/bufferNoFill" value="false"/>
<property key="labeling/bufferSize" value="1"/>
<property key="labeling/bufferSizeInMapUnits" value="false"/>
<property key="labeling/bufferSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/bufferTransp" value="0"/>
<property key="labeling/centroidInside" value="true"/>
<property key="labeling/centroidWhole" value="false"/>
<property key="labeling/decimals" value="3"/>
<property key="labeling/displayAll" value="true"/>
<property key="labeling/dist" value="0"/>
<property key="labeling/distInMapUnits" value="false"/>
<property key="labeling/distMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/drawLabels" value="true"/>
<property key="labeling/enabled" value="true"/>
<property key="labeling/fieldName" value=" &quot;name&quot; || '\n' || &quot;percent&quot; || '%'"/>
<property key="labeling/fitInPolygonOnly" value="true"/>
<property key="labeling/fontCapitals" value="0"/>
<property key="labeling/fontFamily" value="Arial"/>
<property key="labeling/fontItalic" value="false"/>
<property key="labeling/fontLetterSpacing" value="0"/>
<property key="labeling/fontLimitPixelSize" value="false"/>
<property key="labeling/fontMaxPixelSize" value="10000"/>
<property key="labeling/fontMinPixelSize" value="3"/>
<property key="labeling/fontSize" value="7"/>
<property key="labeling/fontSizeInMapUnits" value="false"/>
<property key="labeling/fontSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/fontStrikeout" value="false"/>
<property key="labeling/fontUnderline" value="false"/>
<property key="labeling/fontWeight" value="75"/>
<property key="labeling/fontWordSpacing" value="0"/>
<property key="labeling/formatNumbers" value="false"/>
<property key="labeling/isExpression" value="true"/>
<property key="labeling/labelOffsetInMapUnits" value="true"/>
<property key="labeling/labelOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/labelPerPart" value="false"/>
<property key="labeling/leftDirectionSymbol" value="&lt;"/>
<property key="labeling/limitNumLabels" value="false"/>
<property key="labeling/maxCurvedCharAngleIn" value="25"/>
<property key="labeling/maxCurvedCharAngleOut" value="-25"/>
<property key="labeling/maxNumLabels" value="2000"/>
<property key="labeling/mergeLines" value="false"/>
<property key="labeling/minFeatureSize" value="0"/>
<property key="labeling/multilineAlign" value="4294967295"/>
<property key="labeling/multilineHeight" value="1"/>
<property key="labeling/namedStyle" value="Bold"/>
<property key="labeling/obstacle" value="false"/>
<property key="labeling/obstacleFactor" value="1"/>
<property key="labeling/obstacleType" value="0"/>
<property key="labeling/offsetType" value="0"/>
<property key="labeling/placeDirectionSymbol" value="0"/>
<property key="labeling/placement" value="1"/>
<property key="labeling/placementFlags" value="10"/>
<property key="labeling/plussign" value="false"/>
<property key="labeling/predefinedPositionOrder" value="TR,TL,BR,BL,R,L,TSR,BSR"/>
<property key="labeling/preserveRotation" value="true"/>
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
<property key="labeling/priority" value="0"/>
<property key="labeling/quadOffset" value="4"/>
<property key="labeling/repeatDistance" value="0"/>
<property key="labeling/repeatDistanceMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/repeatDistanceUnit" value="1"/>
<property key="labeling/reverseDirectionSymbol" value="false"/>
<property key="labeling/rightDirectionSymbol" value=">"/>
<property key="labeling/scaleMax" value="35000000"/>
<property key="labeling/scaleMin" value="1"/>
<property key="labeling/scaleVisibility" value="true"/>
<property key="labeling/shadowBlendMode" value="6"/>
<property key="labeling/shadowColorB" value="0"/>
<property key="labeling/shadowColorG" value="0"/>
<property key="labeling/shadowColorR" value="0"/>
<property key="labeling/shadowDraw" value="false"/>
<property key="labeling/shadowOffsetAngle" value="135"/>
<property key="labeling/shadowOffsetDist" value="1"/>
<property key="labeling/shadowOffsetGlobal" value="true"/>
<property key="labeling/shadowOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowOffsetUnits" value="1"/>
<property key="labeling/shadowRadius" value="1.5"/>
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
<property key="labeling/shadowRadiusMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowRadiusUnits" value="1"/>
<property key="labeling/shadowScale" value="100"/>
<property key="labeling/shadowTransparency" value="30"/>
<property key="labeling/shadowUnder" value="0"/>
<property key="labeling/shapeBlendMode" value="0"/>
<property key="labeling/shapeBorderColorA" value="255"/>
<property key="labeling/shapeBorderColorB" value="128"/>
<property key="labeling/shapeBorderColorG" value="128"/>
<property key="labeling/shapeBorderColorR" value="128"/>
<property key="labeling/shapeBorderWidth" value="0"/>
<property key="labeling/shapeBorderWidthMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeBorderWidthUnits" value="1"/>
<property key="labeling/shapeDraw" value="false"/>
<property key="labeling/shapeFillColorA" value="255"/>
<property key="labeling/shapeFillColorB" value="255"/>
<property key="labeling/shapeFillColorG" value="255"/>
<property key="labeling/shapeFillColorR" value="255"/>
<property key="labeling/shapeJoinStyle" value="64"/>
<property key="labeling/shapeOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeOffsetUnits" value="1"/>
<property key="labeling/shapeOffsetX" value="0"/>
<property key="labeling/shapeOffsetY" value="0"/>
<property key="labeling/shapeRadiiMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeRadiiUnits" value="1"/>
<property key="labeling/shapeRadiiX" value="0"/>
<property key="labeling/shapeRadiiY" value="0"/>
<property key="labeling/shapeRotation" value="0"/>
<property key="labeling/shapeRotationType" value="0"/>
<property key="labeling/shapeSVGFile" value=""/>
<property key="labeling/shapeSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeSizeType" value="0"/>
<property key="labeling/shapeSizeUnits" value="1"/>
<property key="labeling/shapeSizeX" value="0"/>
<property key="labeling/shapeSizeY" value="0"/>
<property key="labeling/shapeTransparency" value="0"/>
<property key="labeling/shapeType" value="0"/>
<property key="labeling/substitutions" value="&lt;substitutions/>"/>
<property key="labeling/textColorA" value="255"/>
<property key="labeling/textColorB" value="0"/>
<property key="labeling/textColorG" value="0"/>
<property key="labeling/textColorR" value="0"/>
<property key="labeling/textTransp" value="0"/>
<property key="labeling/upsidedownLabels" value="0"/>
<property key="labeling/useSubstitutions" value="false"/>
<property key="labeling/wrapChar" value=""/>
<property key="labeling/xOffset" value="0.2"/>
<property key="labeling/yOffset" value="0.2"/>
<property key="labeling/zIndex" value="0"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerTransparency>0</layerTransparency>
<displayfield>name</displayfield>
<label>0</label>
<labelattributes>
<label fieldname="" text="Подпись"/>
<family fieldname="" name="MS Shell Dlg 2"/>
<size fieldname="" units="pt" value="12"/>
<bold fieldname="" on="0"/>
<italic fieldname="" on="0"/>
<underline fieldname="" on="0"/>
<strikeout fieldname="" on="0"/>
<color fieldname="" red="0" blue="0" green="0"/>
<x fieldname=""/>
<y fieldname=""/>
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
<angle fieldname="" value="0" auto="0"/>
<alignment fieldname="" value="center"/>
<buffercolor fieldname="" red="255" blue="255" green="255"/>
<buffersize fieldname="" units="pt" value="1"/>
<bufferenabled fieldname="" on=""/>
<multilineenabled fieldname="" on=""/>
<selectedonly on=""/>
</labelattributes>
<SingleCategoryDiagramRenderer diagramType="Histogram" sizeLegend="0" attributeLegend="1">
<DiagramCategory penColor="#000000" labelPlacementMethod="XHeight" penWidth="0" diagramOrientation="Up" sizeScale="0,0,0,0,0,0" minimumSize="0" barWidth="5" penAlpha="255" maxScaleDenominator="1e+08" backgroundColor="#ffffff" transparency="0" width="15" scaleDependency="Area" backgroundAlpha="255" angleOffset="1440" scaleBasedVisibility="0" enabled="0" height="15" lineSizeScale="0,0,0,0,0,0" sizeType="MM" lineSizeType="MM" minScaleDenominator="inf">
<fontProperties description="MS Shell Dlg 2,7.8,-1,5,50,0,0,0,0,0" style=""/>
<attribute field="" color="#000000" label=""/>
</DiagramCategory>
<symbol alpha="1" clip_to_extent="1" type="marker" name="sizeSymbol">
<layer pass="0" class="SimpleMarker" locked="0">
<prop k="angle" v="0"/>
<prop k="color" v="255,0,0,255"/>
<prop k="horizontal_anchor_point" v="1"/>
<prop k="joinstyle" v="bevel"/>
<prop k="name" v="circle"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0"/>
<prop k="outline_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
</layer>
</symbol>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings yPosColumn="-1" showColumn="-1" linePlacementFlags="10" placement="0" dist="0" xPosColumn="-1" priority="0" obstacle="0" zIndex="0" showAll="1"/>
<annotationform>.</annotationform>
<aliases>
<alias field="country_id" index="0" name=""/>
<alias field="region_id" index="1" name=""/>
<alias field="locust_type_id" index="2" name=""/>
<alias field="name" index="3" name=""/>
<alias field="percent" index="4" name=""/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<attributeactions default="-1"/>
<attributetableconfig actionWidgetStyle="dropDown" sortExpression="" sortOrder="1380262664">
<columns>
<column width="-1" hidden="0" type="field" name="country_id"/>
<column width="-1" hidden="0" type="field" name="region_id"/>
<column width="-1" hidden="0" type="field" name="locust_type_id"/>
<column width="-1" hidden="0" type="field" name="name"/>
<column width="-1" hidden="0" type="field" name="percent"/>
<column width="-1" hidden="1" type="actions"/>
</columns>
</attributetableconfig>
<editform>.</editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath>.</editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.
Use this function to add extra logic to your forms.
Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<widgets/>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
</maplayer>
</projectlayers>
<properties>
<Measurement>
<DistanceUnits type="QString">meters</DistanceUnits>
<AreaUnits type="QString">m2</AreaUnits>
</Measurement>
<SpatialRefSys>
<ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String>
<ProjectCrs type="QString">EPSG:4326</ProjectCrs>
<ProjectCRSID type="int">3452</ProjectCRSID>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<Gui>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
</Gui>
<Digitizing>
<DefaultSnapToleranceUnit type="int">2</DefaultSnapToleranceUnit>
<LayerSnappingList type="QStringList">
<value>view_frmlocustinfo_p4_201520170221164520581</value>
</LayerSnappingList>
<LayerSnappingEnabledList type="QStringList">
<value>disabled</value>
</LayerSnappingEnabledList>
<SnappingMode type="QString">current_layer</SnappingMode>
<AvoidIntersectionsList type="QStringList"/>
<LayerSnappingToleranceUnitList type="QStringList">
<value>2</value>
</LayerSnappingToleranceUnitList>
<LayerSnapToList type="QStringList">
<value>to_vertex_and_segment</value>
</LayerSnapToList>
<DefaultSnapType type="QString">off</DefaultSnapType>
<DefaultSnapTolerance type="double">0</DefaultSnapTolerance>
<LayerSnappingToleranceList type="QStringList">
<value>0.000000</value>
</LayerSnappingToleranceList>
</Digitizing>
<PositionPrecision>
<DecimalPlaces type="int">2</DecimalPlaces>
<Automatic type="bool">true</Automatic>
</PositionPrecision>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
</properties>
<visibility-presets/>
</qgis>

View File

@ -0,0 +1,509 @@
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
<qgis projectname="" version="2.18.3">
<title></title>
<autotransaction active="0"/>
<evaluateDefaultValues active="0"/>
<layer-tree-group expanded="1" checked="Qt::PartiallyChecked" name="">
<customproperties/>
<layer-tree-layer expanded="1" checked="Qt::Checked" id="view_frmlocustinfo_p4r_201520170221164520581" name="trt('Map_of_the_level_of_threat')">
<customproperties/>
</layer-tree-layer>
<layer-tree-layer expanded="1" providerKey="" checked="Qt::Unchecked" id="OpenLayers_plugin_layer20170821155911549" source="" name="Bing Aerial with labels">
<customproperties/>
</layer-tree-layer>
</layer-tree-group>
<relations/>
<mapcanvas>
<units>meters</units>
<extent>
<xmin>4606484.6726676719263196</xmin>
<ymin>3728012.39886604063212872</ymin>
<xmax>9866330.61264913156628609</xmax>
<ymax>8074944.57324538938701153</ymax>
</extent>
<rotation>0</rotation>
<projections>1</projections>
<destinationsrs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</destinationsrs>
<rendermaptile>0</rendermaptile>
<layer_coordinate_transform_info>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:4326" srcDatumTransform="-1" destDatumTransform="-1" layerid="view_frmlocustinfo_p4r_201520170221164520581"/>
<layer_coordinate_transform destAuthId="EPSG:3857" srcAuthId="EPSG:3857" srcDatumTransform="-1" destDatumTransform="-1" layerid="OpenLayers_plugin_layer20170821155911549"/>
</layer_coordinate_transform_info>
</mapcanvas>
<layer-tree-canvas>
<custom-order enabled="0">
<item>view_frmlocustinfo_p4r_201520170221164520581</item>
<item>OpenStreetMap20170221170817493</item>
</custom-order>
</layer-tree-canvas>
<legend updateDrawingOrder="true">
<legendlayer drawingOrder="-1" open="true" checked="Qt::Checked" name="trt('Map_of_the_level_of_threat')" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="view_frmlocustinfo_p4r_201520170221164520581" visible="1"/>
</filegroup>
</legendlayer>
<legendlayer drawingOrder="-1" open="true" checked="Qt::Unchecked" name="Bing Aerial with labels" showFeatureCount="0">
<filegroup open="true" hidden="false">
<legendlayerfile isInOverview="0" layerid="OpenLayers_plugin_layer20170821155911549" visible="0"/>
</filegroup>
</legendlayer>
</legend>
<projectlayers>
<maplayer minimumScale="0" maximumScale="1e+08" type="plugin" hasScaleBasedVisibilityFlag="0" name="openlayers">
<extent>
<xmin>-20037508.33999999985098839</xmin>
<ymin>-20037508.33999999985098839</ymin>
<xmax>20037508.33999999985098839</xmax>
<ymax>20037508.33999999985098839</ymax>
</extent>
<id>OpenLayers_plugin_layer20170821155911549</id>
<datasource></datasource>
<keywordList>
<value></value>
</keywordList>
<layername>Bing Aerial with labels</layername>
<srs>
<spatialrefsys>
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs</proj4>
<srsid>3857</srsid>
<srid>3857</srid>
<authid>EPSG:3857</authid>
<description>WGS 84 / Pseudo Mercator</description>
<projectionacronym>merc</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>false</geographicflag>
</spatialrefsys>
</srs>
<customproperties>
<property key="ol_layer_type" value="Bing Aerial with labels"/>
</customproperties>
</maplayer>
<maplayer simplifyAlgorithm="0" minimumScale="0" maximumScale="1e+08" simplifyDrawingHints="1" readOnly="0" minLabelScale="0" maxLabelScale="1e+08" simplifyDrawingTol="1" geometry="Polygon" simplifyMaxScale="1" type="vector" hasScaleBasedVisibilityFlag="0" simplifyLocal="1" scaleBasedLabelVisibilityFlag="0">
<extent>
<xmin>-180</xmin>
<ymin>38.39295510000000178</ymin>
<xmax>180</xmax>
<ymax>82.05862320000009902</ymax>
</extent>
<id>view_frmlocustinfo_p4r_201520170221164520581</id>
<datasource>dbname='CCALM' host=ccalm.org port=5432 user='guest' password='guest' sslmode=disable key='region_id' estimatedmetadata=true srid=4326 type=MultiPolygon table="main"."view_frmlocustinfo_p4r_${year}" (geom) sql=${sql}</datasource>
<keywordList>
<value></value>
</keywordList>
<layername>trt('Map_of_the_level_of_threat')</layername>
<srs>
<spatialrefsys>
<proj4>+proj=longlat +datum=WGS84 +no_defs</proj4>
<srsid>3452</srsid>
<srid>4326</srid>
<authid>EPSG:4326</authid>
<description>WGS 84</description>
<projectionacronym>longlat</projectionacronym>
<ellipsoidacronym>WGS84</ellipsoidacronym>
<geographicflag>true</geographicflag>
</spatialrefsys>
</srs>
<provider encoding="System">postgres</provider>
<previewExpression></previewExpression>
<vectorjoins/>
<layerDependencies/>
<expressionfields/>
<defaults>
<default field="country_id" expression=""/>
<default field="region_id" expression=""/>
<default field="locust_type_id" expression=""/>
<default field="name" expression=""/>
<default field="percent" expression=""/>
</defaults>
<map-layer-style-manager current="">
<map-layer-style name=""/>
</map-layer-style-manager>
<edittypes>
<edittype widgetv2type="TextEdit" name="country_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="region_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="locust_type_id">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="name">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
<edittype widgetv2type="TextEdit" name="percent">
<widgetv2config IsMultiline="0" fieldEditable="1" constraint="" UseHtml="0" labelOnTop="0" constraintDescription="" notNull="0"/>
</edittype>
</edittypes>
<renderer-v2 forceraster="0" symbollevels="0" type="RuleRenderer" enableorderby="0">
<rules key="{d544320a-3c0f-4ff0-97cd-14e77a01f052}">
<rule description="" filter=" &quot;percent&quot; >= -25 AND &quot;percent&quot; &lt;= 25" key="{7c75fcc4-03a0-49be-a6e9-f1fd4612e11f}" symbol="0" label="trt('Normal/Multiyear_average_level')"/>
<rule description="" filter=" &quot;percent&quot; > 25 OR &quot;percent&quot; &lt; -25" key="{708b86f0-c637-43b1-b85b-823ad0a54776}" symbol="1" label="trt('Danger')"/>
<rule filter=" &quot;percent&quot; is null" key="{c017f2c4-f56f-48a8-bbc4-987fa0f239a9}" symbol="2" label="trt('No_data')"/>
</rules>
<symbols>
<symbol alpha="1" clip_to_extent="1" type="fill" name="0">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="0,255,76,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="1">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="255,0,0,77"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,255,128"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
<symbol alpha="1" clip_to_extent="1" type="fill" name="2">
<layer pass="0" class="SimpleFill" locked="0">
<prop k="border_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="color" v="150,150,150,102"/>
<prop k="joinstyle" v="bevel"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0.26"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="style" v="solid"/>
</layer>
</symbol>
</symbols>
</renderer-v2>
<labeling type="simple"/>
<customproperties>
<property key="embeddedWidgets/count" value="0"/>
<property key="labeling" value="pal"/>
<property key="labeling/addDirectionSymbol" value="false"/>
<property key="labeling/angleOffset" value="0"/>
<property key="labeling/blendMode" value="0"/>
<property key="labeling/bufferBlendMode" value="0"/>
<property key="labeling/bufferColorA" value="255"/>
<property key="labeling/bufferColorB" value="255"/>
<property key="labeling/bufferColorG" value="255"/>
<property key="labeling/bufferColorR" value="255"/>
<property key="labeling/bufferDraw" value="true"/>
<property key="labeling/bufferJoinStyle" value="128"/>
<property key="labeling/bufferNoFill" value="false"/>
<property key="labeling/bufferSize" value="1"/>
<property key="labeling/bufferSizeInMapUnits" value="false"/>
<property key="labeling/bufferSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/bufferTransp" value="0"/>
<property key="labeling/centroidInside" value="true"/>
<property key="labeling/centroidWhole" value="false"/>
<property key="labeling/decimals" value="3"/>
<property key="labeling/displayAll" value="true"/>
<property key="labeling/dist" value="0"/>
<property key="labeling/distInMapUnits" value="false"/>
<property key="labeling/distMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/drawLabels" value="true"/>
<property key="labeling/enabled" value="true"/>
<property key="labeling/fieldName" value=" &quot;name&quot; || '\n' || &quot;percent&quot; || '%'"/>
<property key="labeling/fitInPolygonOnly" value="true"/>
<property key="labeling/fontCapitals" value="0"/>
<property key="labeling/fontFamily" value="Arial"/>
<property key="labeling/fontItalic" value="false"/>
<property key="labeling/fontLetterSpacing" value="0"/>
<property key="labeling/fontLimitPixelSize" value="false"/>
<property key="labeling/fontMaxPixelSize" value="10000"/>
<property key="labeling/fontMinPixelSize" value="3"/>
<property key="labeling/fontSize" value="7"/>
<property key="labeling/fontSizeInMapUnits" value="false"/>
<property key="labeling/fontSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/fontStrikeout" value="false"/>
<property key="labeling/fontUnderline" value="false"/>
<property key="labeling/fontWeight" value="75"/>
<property key="labeling/fontWordSpacing" value="0"/>
<property key="labeling/formatNumbers" value="false"/>
<property key="labeling/isExpression" value="true"/>
<property key="labeling/labelOffsetInMapUnits" value="true"/>
<property key="labeling/labelOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/labelPerPart" value="false"/>
<property key="labeling/leftDirectionSymbol" value="&lt;"/>
<property key="labeling/limitNumLabels" value="false"/>
<property key="labeling/maxCurvedCharAngleIn" value="25"/>
<property key="labeling/maxCurvedCharAngleOut" value="-25"/>
<property key="labeling/maxNumLabels" value="2000"/>
<property key="labeling/mergeLines" value="false"/>
<property key="labeling/minFeatureSize" value="0"/>
<property key="labeling/multilineAlign" value="4294967295"/>
<property key="labeling/multilineHeight" value="1"/>
<property key="labeling/namedStyle" value="Bold"/>
<property key="labeling/obstacle" value="false"/>
<property key="labeling/obstacleFactor" value="1"/>
<property key="labeling/obstacleType" value="0"/>
<property key="labeling/offsetType" value="0"/>
<property key="labeling/placeDirectionSymbol" value="0"/>
<property key="labeling/placement" value="1"/>
<property key="labeling/placementFlags" value="10"/>
<property key="labeling/plussign" value="false"/>
<property key="labeling/predefinedPositionOrder" value="TR,TL,BR,BL,R,L,TSR,BSR"/>
<property key="labeling/preserveRotation" value="true"/>
<property key="labeling/previewBkgrdColor" value="#ffffff"/>
<property key="labeling/priority" value="0"/>
<property key="labeling/quadOffset" value="4"/>
<property key="labeling/repeatDistance" value="0"/>
<property key="labeling/repeatDistanceMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/repeatDistanceUnit" value="1"/>
<property key="labeling/reverseDirectionSymbol" value="false"/>
<property key="labeling/rightDirectionSymbol" value=">"/>
<property key="labeling/scaleMax" value="35000000"/>
<property key="labeling/scaleMin" value="1"/>
<property key="labeling/scaleVisibility" value="true"/>
<property key="labeling/shadowBlendMode" value="6"/>
<property key="labeling/shadowColorB" value="0"/>
<property key="labeling/shadowColorG" value="0"/>
<property key="labeling/shadowColorR" value="0"/>
<property key="labeling/shadowDraw" value="false"/>
<property key="labeling/shadowOffsetAngle" value="135"/>
<property key="labeling/shadowOffsetDist" value="1"/>
<property key="labeling/shadowOffsetGlobal" value="true"/>
<property key="labeling/shadowOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowOffsetUnits" value="1"/>
<property key="labeling/shadowRadius" value="1.5"/>
<property key="labeling/shadowRadiusAlphaOnly" value="false"/>
<property key="labeling/shadowRadiusMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shadowRadiusUnits" value="1"/>
<property key="labeling/shadowScale" value="100"/>
<property key="labeling/shadowTransparency" value="30"/>
<property key="labeling/shadowUnder" value="0"/>
<property key="labeling/shapeBlendMode" value="0"/>
<property key="labeling/shapeBorderColorA" value="255"/>
<property key="labeling/shapeBorderColorB" value="128"/>
<property key="labeling/shapeBorderColorG" value="128"/>
<property key="labeling/shapeBorderColorR" value="128"/>
<property key="labeling/shapeBorderWidth" value="0"/>
<property key="labeling/shapeBorderWidthMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeBorderWidthUnits" value="1"/>
<property key="labeling/shapeDraw" value="false"/>
<property key="labeling/shapeFillColorA" value="255"/>
<property key="labeling/shapeFillColorB" value="255"/>
<property key="labeling/shapeFillColorG" value="255"/>
<property key="labeling/shapeFillColorR" value="255"/>
<property key="labeling/shapeJoinStyle" value="64"/>
<property key="labeling/shapeOffsetMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeOffsetUnits" value="1"/>
<property key="labeling/shapeOffsetX" value="0"/>
<property key="labeling/shapeOffsetY" value="0"/>
<property key="labeling/shapeRadiiMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeRadiiUnits" value="1"/>
<property key="labeling/shapeRadiiX" value="0"/>
<property key="labeling/shapeRadiiY" value="0"/>
<property key="labeling/shapeRotation" value="0"/>
<property key="labeling/shapeRotationType" value="0"/>
<property key="labeling/shapeSVGFile" value=""/>
<property key="labeling/shapeSizeMapUnitScale" value="0,0,0,0,0,0"/>
<property key="labeling/shapeSizeType" value="0"/>
<property key="labeling/shapeSizeUnits" value="1"/>
<property key="labeling/shapeSizeX" value="0"/>
<property key="labeling/shapeSizeY" value="0"/>
<property key="labeling/shapeTransparency" value="0"/>
<property key="labeling/shapeType" value="0"/>
<property key="labeling/substitutions" value="&lt;substitutions/>"/>
<property key="labeling/textColorA" value="255"/>
<property key="labeling/textColorB" value="0"/>
<property key="labeling/textColorG" value="0"/>
<property key="labeling/textColorR" value="0"/>
<property key="labeling/textTransp" value="0"/>
<property key="labeling/upsidedownLabels" value="0"/>
<property key="labeling/useSubstitutions" value="false"/>
<property key="labeling/wrapChar" value=""/>
<property key="labeling/xOffset" value="0.2"/>
<property key="labeling/yOffset" value="0.2"/>
<property key="labeling/zIndex" value="0"/>
<property key="variableNames"/>
<property key="variableValues"/>
</customproperties>
<blendMode>0</blendMode>
<featureBlendMode>0</featureBlendMode>
<layerTransparency>0</layerTransparency>
<displayfield>name</displayfield>
<label>0</label>
<labelattributes>
<label fieldname="" text="Подпись"/>
<family fieldname="" name="MS Shell Dlg 2"/>
<size fieldname="" units="pt" value="12"/>
<bold fieldname="" on="0"/>
<italic fieldname="" on="0"/>
<underline fieldname="" on="0"/>
<strikeout fieldname="" on="0"/>
<color fieldname="" red="0" blue="0" green="0"/>
<x fieldname=""/>
<y fieldname=""/>
<offset x="0" y="0" units="pt" yfieldname="" xfieldname=""/>
<angle fieldname="" value="0" auto="0"/>
<alignment fieldname="" value="center"/>
<buffercolor fieldname="" red="255" blue="255" green="255"/>
<buffersize fieldname="" units="pt" value="1"/>
<bufferenabled fieldname="" on=""/>
<multilineenabled fieldname="" on=""/>
<selectedonly on=""/>
</labelattributes>
<SingleCategoryDiagramRenderer diagramType="Histogram" sizeLegend="0" attributeLegend="1">
<DiagramCategory penColor="#000000" labelPlacementMethod="XHeight" penWidth="0" diagramOrientation="Up" sizeScale="0,0,0,0,0,0" minimumSize="0" barWidth="5" penAlpha="255" maxScaleDenominator="1e+08" backgroundColor="#ffffff" transparency="0" width="15" scaleDependency="Area" backgroundAlpha="255" angleOffset="1440" scaleBasedVisibility="0" enabled="0" height="15" lineSizeScale="0,0,0,0,0,0" sizeType="MM" lineSizeType="MM" minScaleDenominator="inf">
<fontProperties description="MS Shell Dlg 2,7.8,-1,5,50,0,0,0,0,0" style=""/>
<attribute field="" color="#000000" label=""/>
</DiagramCategory>
<symbol alpha="1" clip_to_extent="1" type="marker" name="sizeSymbol">
<layer pass="0" class="SimpleMarker" locked="0">
<prop k="angle" v="0"/>
<prop k="color" v="255,0,0,255"/>
<prop k="horizontal_anchor_point" v="1"/>
<prop k="joinstyle" v="bevel"/>
<prop k="name" v="circle"/>
<prop k="offset" v="0,0"/>
<prop k="offset_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="offset_unit" v="MM"/>
<prop k="outline_color" v="0,0,0,255"/>
<prop k="outline_style" v="solid"/>
<prop k="outline_width" v="0"/>
<prop k="outline_width_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="outline_width_unit" v="MM"/>
<prop k="scale_method" v="diameter"/>
<prop k="size" v="2"/>
<prop k="size_map_unit_scale" v="0,0,0,0,0,0"/>
<prop k="size_unit" v="MM"/>
<prop k="vertical_anchor_point" v="1"/>
</layer>
</symbol>
</SingleCategoryDiagramRenderer>
<DiagramLayerSettings yPosColumn="-1" showColumn="-1" linePlacementFlags="10" placement="0" dist="0" xPosColumn="-1" priority="0" obstacle="0" zIndex="0" showAll="1"/>
<annotationform>.</annotationform>
<aliases>
<alias field="country_id" index="0" name=""/>
<alias field="region_id" index="1" name=""/>
<alias field="locust_type_id" index="2" name=""/>
<alias field="name" index="3" name=""/>
<alias field="percent" index="4" name=""/>
</aliases>
<excludeAttributesWMS/>
<excludeAttributesWFS/>
<attributeactions default="-1"/>
<attributetableconfig actionWidgetStyle="dropDown" sortExpression="" sortOrder="1380262664">
<columns>
<column width="-1" hidden="0" type="field" name="country_id"/>
<column width="-1" hidden="0" type="field" name="region_id"/>
<column width="-1" hidden="0" type="field" name="locust_type_id"/>
<column width="-1" hidden="0" type="field" name="name"/>
<column width="-1" hidden="0" type="field" name="percent"/>
<column width="-1" hidden="1" type="actions"/>
</columns>
</attributetableconfig>
<editform>.</editform>
<editforminit/>
<editforminitcodesource>0</editforminitcodesource>
<editforminitfilepath>.</editforminitfilepath>
<editforminitcode><![CDATA[# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.
Use this function to add extra logic to your forms.
Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget
def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget, "MyLineEdit")
]]></editforminitcode>
<featformsuppress>0</featformsuppress>
<editorlayout>generatedlayout</editorlayout>
<widgets/>
<conditionalstyles>
<rowstyles/>
<fieldstyles/>
</conditionalstyles>
</maplayer>
</projectlayers>
<properties>
<Measurement>
<DistanceUnits type="QString">meters</DistanceUnits>
<AreaUnits type="QString">m2</AreaUnits>
</Measurement>
<SpatialRefSys>
<ProjectCRSProj4String type="QString">+proj=longlat +datum=WGS84 +no_defs</ProjectCRSProj4String>
<ProjectCrs type="QString">EPSG:4326</ProjectCrs>
<ProjectCRSID type="int">3452</ProjectCRSID>
<ProjectionsEnabled type="int">1</ProjectionsEnabled>
</SpatialRefSys>
<Paths>
<Absolute type="bool">false</Absolute>
</Paths>
<Gui>
<SelectionColorBluePart type="int">0</SelectionColorBluePart>
<CanvasColorGreenPart type="int">255</CanvasColorGreenPart>
<CanvasColorRedPart type="int">255</CanvasColorRedPart>
<SelectionColorRedPart type="int">255</SelectionColorRedPart>
<SelectionColorAlphaPart type="int">255</SelectionColorAlphaPart>
<SelectionColorGreenPart type="int">255</SelectionColorGreenPart>
<CanvasColorBluePart type="int">255</CanvasColorBluePart>
</Gui>
<Digitizing>
<DefaultSnapToleranceUnit type="int">2</DefaultSnapToleranceUnit>
<LayerSnappingList type="QStringList">
<value>view_frmlocustinfo_p4r_201520170221164520581</value>
</LayerSnappingList>
<LayerSnappingEnabledList type="QStringList">
<value>disabled</value>
</LayerSnappingEnabledList>
<SnappingMode type="QString">current_layer</SnappingMode>
<AvoidIntersectionsList type="QStringList"/>
<LayerSnappingToleranceUnitList type="QStringList">
<value>2</value>
</LayerSnappingToleranceUnitList>
<LayerSnapToList type="QStringList">
<value>to_vertex_and_segment</value>
</LayerSnapToList>
<DefaultSnapType type="QString">off</DefaultSnapType>
<DefaultSnapTolerance type="double">0</DefaultSnapTolerance>
<LayerSnappingToleranceList type="QStringList">
<value>0.000000</value>
</LayerSnappingToleranceList>
</Digitizing>
<PositionPrecision>
<DecimalPlaces type="int">2</DecimalPlaces>
<Automatic type="bool">true</Automatic>
</PositionPrecision>
<Legend>
<filterByMap type="bool">false</filterByMap>
</Legend>
</properties>
<visibility-presets/>
</qgis>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,373 @@
<%@ page language="java" contentType="application/octet-stream" pageEncoding="UTF-8"%>
<%@ page session="true" %>
<%@page import="java.sql.*"%>
<%@page import="java.io.FileReader"%>
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.InputStream"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.BufferedReader"%>
<%@page import="java.util.Locale"%>
<%@page import="java.util.ResourceBundle"%>
<%@ page import="java.io.File" %>
<%@page import="javax.xml.parsers.DocumentBuilderFactory"%>
<%@page import="javax.xml.parsers.DocumentBuilder"%>
<%@page import="org.w3c.dom.Document"%>
<%@page import="org.w3c.dom.Element"%>
<%@page import="org.w3c.dom.NamedNodeMap"%>
<%@page import="org.w3c.dom.Node"%>
<%@page import="org.w3c.dom.NodeList"%>
<%@page import="org.w3c.dom.ls.DOMImplementationLS"%>
<%@page import="org.w3c.dom.ls.LSSerializer"%>
<%@page import="org.w3c.dom.ls.LSOutput"%>
<%@page import="org.w3c.dom.CDATASection"%>
<%@page import="org.w3c.dom.CharacterData"%>
<%!
//application/octet-stream
public String m_locale = "en";
/*public String trt(String val)
{
String locale = m_locale;
try
{
ResourceBundle rb = ResourceBundle.getBundle("messages", new Locale(locale));
val=rb.getString(val);
val=new String(val.getBytes("ISO-8859-1"), "UTF-8");
return val;
}catch(Exception exception){
System.out.println("Exception: "+exception.getMessage());
}
return val.replaceAll("_", " ");
}
//Translate text by patterns
public String getText(String text)
{
int pos1=0;
while(true)
{
pos1=text.indexOf("trt('",pos1);
if(pos1==-1) break;
int pos2=text.indexOf("')",pos1);
if(pos2==-1) break;
text=text.substring(0,pos1)+trt(text.substring(pos1+3,pos2))+text.substring(pos2+2);
}
return text;
}*/
public String fileToString(String fName)
{
StringBuilder sb = new StringBuilder();
try
{
InputStream is = new FileInputStream(fName);
BufferedReader buf = new BufferedReader(new InputStreamReader(is));
String line = buf.readLine();
while(line != null)
{
sb.append(line).append("\n");
line = buf.readLine();
}
buf.close();
}
catch (Exception e){
System.out.println("Error: "+e.getMessage());
}
return sb.toString();
}
%>
<%
String db_url="";
String db_login="";
String db_password="";
//Load DB configuration from "config.xml"
try {
String fullPath = pageContext.getServletContext().getRealPath("/WEB-INF/config.xml");
File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
e.printStackTrace();
}
//Connection to database
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
System.out.println("Connect is OK!");
}else
{
out.write("<br>Connect is ERROR<br>");
}
}catch(Exception e)
{
out.write("<br>Connect Exception:"+e.getMessage()+"<br>");
}
//Select language for current user
String user_id = (String)request.getSession().getAttribute("USER_ID");
if(user_id==null) user_id="null";
Statement st = conn.createStatement();
ResultSet rs=null;
try {
String sql="select l.short_name lng from main._users u LEFT JOIN main._languages l ON l.id = u.language_id where u.id="+user_id+";";
rs = st.executeQuery(sql);
} catch( SQLException ex )
{
out.write("<br>SQLException:"+ex.getMessage()+"<br>");
}
if(rs!=null)
{
while (rs.next())
{
m_locale = rs.getString("lng");
}
}
st.close();
String jspPath = application.getRealPath("/")+"QGIS/";
String fileAsString="";
String name=request.getParameter("name");
//Pods (кубышки)
if(name!=null && (name.equals("frmlocust_pods_density") || name.equals("frmlocust_hoppers_density") || name.equals("frmlocust_bands") || name.equals("frmlocust_adults_density") || name.equals("frmlocust_swarms")))
{
fileAsString = fileToString(jspPath + name + ".qgs");
String country_id=request.getParameter("country_id");
String locust_type_id=request.getParameter("locust_type_id");
String date_start=request.getParameter("date_start");
String date_end=request.getParameter("date_end");
String registered=request.getParameter("registered");
//Make SQL
String sql = "1=1";
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
if(country_id.equals("-1"))
{
sql+=" and country_id in (7,3,4,2)";
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql+=" and country_id in (7,1,5,6,8,9,10)";
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql+=" and country_id="+country_id;
sql2+=" and country_id="+country_id;
}
}
if(locust_type_id!=null && !locust_type_id.equals(""))
{
sql+=" and locust_type_id="+locust_type_id;
}
if(date_start!=null && !date_start.equals(""))
{
sql+=" and date>='"+date_start+"'";
}
if(date_end!=null && !date_end.equals(""))
{
sql+=" and date&lt;='"+date_end+"'";
}
if(registered!=null && registered.equals("1"))
{
sql+=" and registered=true";
}else
if(registered!=null && registered.equals("0"))
{
sql+=" and registered=false";
}
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{sql\\}",sql);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
}
if(name!=null && name.equals("frmlocustdel"))
{
fileAsString = fileToString(jspPath + name + ".qgs");
String country_id=request.getParameter("country_id");
String date_start=request.getParameter("date_start");
String date_end=request.getParameter("date_end");
String registered=request.getParameter("registered");
//Make SQL
String sql = "1=1";
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
//sql+=" and country_id="+country_id;
if(country_id.equals("-1"))
{
sql+=" and country_id in (7,3,4,2)";
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql+=" and country_id in (7,1,5,6,8,9,10)";
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql+=" and country_id="+country_id;
sql2+=" and country_id="+country_id;
}
}
if(date_start!=null && !date_start.equals(""))
{
sql+=" and date>='"+date_start+"'";
}
if(date_end!=null && !date_end.equals(""))
{
sql+=" and date&lt;='"+date_end+"'";
}
if(registered!=null && registered.equals("1"))
{
sql+=" and registered=true";
}else
if(registered!=null && registered.equals("0"))
{
sql+=" and registered=false";
}
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{sql\\}",sql);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
}
if(name!=null && (name.equals("frmlocustinfo_p2") || name.equals("frmlocustinfo_p3") || name.equals("frmlocustinfo_p4")))
{
String country_id=request.getParameter("country_id");
String year=request.getParameter("year");
String locust_type_id=request.getParameter("locust_type_id");
//Make SQL
String sql = "1=1";
if(country_id!=null && !country_id.equals(""))
{
if(country_id.equals("-1"))
{
sql+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql+=" and country_id="+country_id;
}
}
if(locust_type_id!=null && !locust_type_id.equals(""))
{
sql+=" and locust_type_id="+locust_type_id;
}
String fileName = jspPath + name + ".qgs";
fileAsString = fileToString(fileName);
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{year\\}",year);
fileAsString=fileAsString.replaceAll("\\$\\{sql\\}",sql);
}
if(name!=null && (name.equals("frmlocustinfo_p2r") || name.equals("frmlocustinfo_p3r") || name.equals("frmlocustinfo_p4r")))
{
String region_id=request.getParameter("region_id");
String year=request.getParameter("year");
String locust_type_id=request.getParameter("locust_type_id");
//Make SQL
String sql = "1=1";
if(region_id!=null && !region_id.equals(""))
{
sql+=" and region_id="+region_id;
}
if(locust_type_id!=null && !locust_type_id.equals(""))
{
sql+=" and locust_type_id="+locust_type_id;
}
String fileName = jspPath + name + ".qgs";
fileAsString = fileToString(fileName);
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{year\\}",year);
fileAsString=fileAsString.replaceAll("\\$\\{sql\\}",sql);
}
if(name!=null && name.equals("weather"))
{
String country_id=request.getParameter("country_id");
String country_name=request.getParameter("country_name");
//Make SQL
String sql2 = "1=1";
if(country_id!=null && !country_id.equals(""))
{
//sql+=" and country_id="+country_id;
if(country_id.equals("-1"))
{
sql2+=" and country_id in (7,3,4,2)";
}else if(country_id.equals("-2"))
{
sql2+=" and country_id in (7,1,5,6,8,9,10)";
}else
{
sql2+=" and country_id="+country_id;
}
}
String fileName = jspPath + name + ".qgs";
fileAsString = fileToString(fileName);
//Apply variables to text
fileAsString=fileAsString.replaceAll("\\$\\{country\\}",country_name);
fileAsString=fileAsString.replaceAll("\\$\\{sql2\\}",sql2);
}
if(name!=null && name.equals("NDVI"))
{
String fileName = jspPath + "NDVI.qgs";
fileAsString = fileToString(fileName);
}
if(name!=null && name.equals("NDWI"))
{
String fileName = jspPath + "NDWI.qgs";
fileAsString = fileToString(fileName);
}
//Send file to client.
response.setHeader("Content-Disposition", "attachment;filename=Locust.qgs");
out.write(fileAsString); //out.write(getText(fileAsString));
%>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

View File

@ -0,0 +1,93 @@
/*https://1stwebdesigner.com/free-code-snippets-css-buttons/*/
:root{
--btn-color: #d9d9cc; /*Цвет кнопки*/
--btn-color2: #E0E0FF; /*Цвет кнопки при наведении на неё мышкой*/
}
/* Normal white Button as seen on Google.com*/
button,
.button-secondary{
color: #444444;
background: var(--btn-color);
border: 1px #AAAAAA solid;
padding: 5px 10px;
border-radius: 2px;
font-weight: bold;
font-size: 9pt;
outline: none;
}
button:hover {
border: 1px #C6C6C6 solid;
box-shadow: 1px 1px 1px #EAEAEA;
color: #333333;
background: var(--btn-color2);
}
button:active {
box-shadow: inset 1px 1px 1px #DFDFDF;
}
/* Blue button as seen on translate.google.com*/
button.blue {
color: white;
background: #4C8FFB;
border: 1px #3079ED solid;
box-shadow: inset 0 1px 0 #80B0FB;
}
button.blue:hover {
border: 1px #2F5BB7 solid;
box-shadow: 0 1px 1px #EAEAEA, inset 0 1px 0 #5A94F1;
background: #3F83F1;
}
button.blue:active {
box-shadow: inset 0 2px 5px #2370FE;
}
/* Orange button as seen on blogger.com*/
button.orange {
color: white;
border: 1px solid #FB8F3D;
background: -webkit-linear-gradient(top, #FDA251, #FB8F3D);
background: -moz-linear-gradient(top, #FDA251, #FB8F3D);
background: -ms-linear-gradient(top, #FDA251, #FB8F3D);
}
button.orange:hover {
border: 1px solid #EB5200;
background: -webkit-linear-gradient(top, #FD924C, #F9760B);
background: -moz-linear-gradient(top, #FD924C, #F9760B);
background: -ms-linear-gradient(top, #FD924C, #F9760B);
box-shadow: 0 1px #EFEFEF;
}
button.orange:active {
box-shadow: inset 0 1px 1px rgba(0,0,0,0.3);
}
/* Red Google Button as seen on drive.google.com */
button.red {
background: -webkit-linear-gradient(top, #DD4B39, #D14836);
background: -moz-linear-gradient(top, #DD4B39, #D14836);
background: -ms-linear-gradient(top, #DD4B39, #D14836);
border: 1px solid #DD4B39;
color: white;
text-shadow: 0 1px 0 #C04131;
}
button.red:hover {
background: -webkit-linear-gradient(top, #DD4B39, #C53727);
background: -moz-linear-gradient(top, #DD4B39, #C53727);
background: -ms-linear-gradient(top, #DD4B39, #C53727);
border: 1px solid #AF301F;
}
button.red:active {
box-shadow: inset 0 1px 1px rgba(0,0,0,0.2);
background: -webkit-linear-gradient(top, #D74736, #AD2719);
background: -moz-linear-gradient(top, #D74736, #AD2719);
background: -ms-linear-gradient(top, #D74736, #AD2719);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

View File

@ -0,0 +1,96 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.io.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.ResourceBundle"%>
<%@page import="javax.xml.parsers.DocumentBuilderFactory"%>
<%@page import="javax.xml.parsers.DocumentBuilder"%>
<%@page import="org.w3c.dom.Document"%>
<%@page import="org.w3c.dom.Element"%>
<%@page import="org.w3c.dom.NamedNodeMap"%>
<%@page import="org.w3c.dom.Node"%>
<%@page import="org.w3c.dom.NodeList"%>
<%@page import="org.w3c.dom.ls.DOMImplementationLS"%>
<%@page import="org.w3c.dom.ls.LSSerializer"%>
<%@page import="org.w3c.dom.ls.LSOutput"%>
<%@page import="org.w3c.dom.CDATASection"%>
<%@page import="org.w3c.dom.CharacterData"%>
<%
String db_url="";
String db_login="";
String db_password="";
//Load DB configuration from "config.xml"
try {
String fullPath = pageContext.getServletContext().getRealPath("/WEB-INF/config.xml");
File fXmlFile = new File(fullPath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
Element nMain=doc.getDocumentElement();
NodeList nl=nMain.getChildNodes();
for (int i = 0; i <nl.getLength(); i++)
{
if(nl.item(i).getNodeName().equals("db-url"))
db_url=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-login"))
db_login=nl.item(i).getTextContent();
if(nl.item(i).getNodeName().equals("db-password"))
db_password=nl.item(i).getTextContent();
}
} catch (Exception e) {
e.printStackTrace();
}
String table = request.getParameter("table");
String id = request.getParameter("id");
//Selection of geometric information and sending it to the client using JSON
Connection conn = null;
try{
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(db_url,db_login,db_password);
if(conn!=null)
{
System.out.println("Connect is OK!");
}else
{
out.write("<br>Connect is ERROR<br>");
}
}catch(Exception e)
{
out.write("<br>Connect Exception:"+e.getMessage()+"<br>");
}
Statement st = conn.createStatement();
ResultSet rs=null;
try {
String sql="select id,name,ST_AsGeoJSON(geom,3,0) as geom from main."+table+" where id="+id+";";
rs = st.executeQuery(sql);
} catch( SQLException ex )
{
out.write("<br>SQLException:"+ex.getMessage()+"<br>");
}
if(rs!=null)
{
while (rs.next())
{
String geom=null;
try {
geom=rs.getString("geom");
} catch( Exception ex )
{
out.write("<br>SQLException:"+ex.getMessage()+"<br>");
System.out.println("Error: "+ex.getMessage());
}
if(geom==null) geom="";
out.write(geom);
}
}
st.close();
conn.close();
%>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Some files were not shown because too many files have changed in this diff Show More