310000浙江省 杭州市
321000浙江省 金华市
312000浙江省 绍兴市
313000浙江省 湖州市
323000浙江省 丽水市
314000浙江省 嘉兴市
315000浙江省 宁波市
316000浙江省 舟山市
324000浙江省 衢州市
318000浙江省 台州市
325000浙江省 温州市
衢州港龙游港区桥头江作业区是衢州和金华地区目前唯一的公用码头,也是钱塘江中上游首个500吨级公用码头。
它位于龙游县湖镇镇桥头江村,规划建设500吨级散货、件杂货、集装箱泊位共14个(水工结构按1000吨级设计),泊位总长880米,设计年通过能力为515万吨。
ref="https://mp.weixin.qq.com/s?__biz=MzU2NTY0MzUxMw==&mid=2247483841&idx=1&sn=01c2bc8a747a9548c742fdb4973473db&chksm=fcb9d057cbce5941762602db7d6e371addfb703647992aea01641f1a390e620c985323c5d7cc&token=1145924782&lang=zh_CN#rd">衢州概览|捡历史的彩蛋,挖生态的矿,四线城市表示自己还能抢救一下
>2018-09-29
作者:大蔬本叔
公众号:新合前哨
新合前哨 · 007 期预计阅读时间:4分钟 | 产业观察 · 005 期 |
衢州——浙江的省辖地级市曾经它的生态基因辐射过全国如今又将在全球领域内攻城掠地这个产业发展历经过彷徨失意与后知后觉的小城正在实现生态与文化的原力觉醒
失意的柑橘
衢州位于浙江省西南地区,是一个四线城市,如今在全国范围内并不知名,但在上世纪八十年代,衢州还是小有名气。这主要得益于衢州的柑橘产业。
衢州位于钱塘江上游,浙江省西部,在我国地势的第三阶梯上,境内的主要地形是山地和丘陵,共占总面积的86%,这样的地形结构非常适合种植果树。而衢州丘陵的红壤土成分多,土质呈酸性,在早期土地开发、改良水平有限的情况下,也就只适合大面积种种柑橘。柑橘种植在衢州历史悠久,也是上世纪八十年代衢州人发迹的主要原因之一。
上世纪初,抗战和解放战争破坏了我国的水果种植业,建国之初,水果变成了奢侈品。由于节俭风气盛行,水果的种植和食用都有限制。改革开放后,一方面需求解禁,水果需求连年膨胀;另一方面生产解禁,衢州橘林修复后得以丰产。衢州柑橘种类繁多,有椪柑、蜜柑,也有胡柚、金橙,柑橘的多样化和规模化生产完全适应了刚解禁的需求。衢州最具标志性的柑橘品类非椪柑莫属,这个品种虽然外形朴实但是口感一流,很快就攻占了国人的味蕾,紧接着把衢州的名字也送进了千家万户。
其实,衢州椪柑流行还有一个重要原因——耐储藏。这个品种采收之后放一个月都不会坏,反而风味更佳。在交通物流并不发达的时期,橘子耐储存意味着可以辐射到更广的范围,到各地餐盘上的时候新鲜依旧,是非常珍贵的品质。那时候,衢州的橘子三元一斤比猪肉贵,当地流行着这样的说法“留棵橘子树给儿孙比留套房都有用”,衢州很多本地人都是靠种橘子发家致富的。
事实上,橘子树本就是一种经济效益绝佳的果树,挂果早而且单产高,以至于后来国内很多地方都开始靠种橘子脱贫致富。我国橘子产业一直到今天都在膨胀,2017年后橘子居然超过苹果成为我国第一大水果产业。只是在这样的膨胀过程中,供需地位早已转换。1995年之后,国内的橘子价格开始走向平民化。不过,橘子商们还是绞尽脑汁把柑橘经济玩出新花样,不仅大量种植、大量出口还在不断培育新品种。比如这些年流行的四会砂糖橘十月、临海蜜橘宫川,象山杂柑红美人,不仅名字令人遐想,口感和颜值也越来越傲娇。临海的宫川甜度高还能连皮吃已经很奇了,到了象山红美人已经发展出插个管儿就能吸着吃的操作。象山红美人据说是橘中爱马仕,光是批量价格就已经高达60元每公斤。
显然,椪柑这类丑萌而朴实的果子,终究敌不过层出不穷的妖艳新茬儿。随着交通和物流水平的提升,椪柑耐储藏也不再算是优势,伴着国人味蕾对衢橘的淡忘,衢州这个没什么特点的小城市也逐渐消失在大众视野里。
二、历史的彩蛋
好在衢州还是有点小幸运,身为浙江省的一员,发达省份的红利多少还能享受一点。沿海的开放城市在最初发展期,都引进过一些高污染、高收益的企业,不过在城市经济实力上升、对环境质量有要求之后,就开始对这类企业进行驱逐。
衢州属于沿海的省份,但位置非常靠内,和沿海的宁波、温州不能比,但是大城市驱逐的产业,让衢州有了承接溢出产能的机会,比如造纸、比如热电,这在一定程度上减缓了衢州的衰落,不过也使衢州在特色挖掘上变得懈怠。衢州在浙江省西南部、沪杭经济圈的最边缘,强市再怎么辐射,到这里都衰减得差不多,衢州不自己拼一下的话,是无论如何也带不动的。2000年之后,浙江省经过一轮又一轮规划,最终把多年经济倒数的衢州定位成浙江省的生态屏障和大花园。这意味着许多发展政策不会往这里倾斜,意味着衢州想要凭借效益工业升级一下再洗白的机会也没有了。
那就发展生态吧。但是国内生态城市也有很多,没有城市品牌和定位还是没有前途。衢州生态景观基础还是有的,不过整体的景观格局小山小水不够开阔,历代文人墨客也鲜少留下只言片语。景观建设缺乏人文精神的支撑,旅游业发展也就没有恒久的动力。衢州的名字是伴随衢橘失势一同衰落的,此后再谈衢州几乎没有像样的关联词了。幸运的是,历史给衢州留了个彩蛋:衢州和孔家原本有一段渊源。谈到孔庙,很多人都会想到山东曲阜,其实正统的孔氏家庙一共有两个,一个在曲阜,另一个在衢州。
自汉元帝起,孔家地位不断提高,孔子的嫡亲长孙开始受封爵位,到了北宋仁宗时期,孔子嫡亲长孙的封号为衍圣公。北宋末年金兵南侵,宋高宗赵构南渡,在今天的浙江杭州一带建了都。孔子的第48代裔孙、第三代衍圣公孔端友,就负着孔子和孔子夫人的楷木像,离开山东曲阜,随迁到衢州,后在此敕建孔氏家庙,后人称为南宗。
当然山东的曲阜仍然留下了孔家的族人,此时他们处在伪齐刘豫政权的统治下,这个刘豫为了表示自己政权的正统,在山东曲阜立了孔瑞友弟弟的次子为衍圣公,也就形成了所谓的北宗。在这南北分治的100多年间,南北衍圣公同时在两个对立的朝廷中供职。后来蒙古统一中国,到了元世祖时期,南宗衍圣公孔洙以为北宗护祖庙有功,主动让出衍圣公,此后北宗就承袭了衍圣公的爵位。从历史的脉络中可以了解,南宗实为孔子后裔的正宗,但是北宗得到了由元至清王朝的承认,成为名义上的正宗。
随着孔氏南宗家庙建筑和园林的发掘、复建完成,2004年衢州捡起这段历史,首次举办“中国衢州国际孔子文化节暨祭孔大典”。后来每年9月28日孔子诞辰,都会举办祭祀典礼。但南孔文化当时还不足以形成衢州的文化品牌。2011年衢州的南宗祭孔入选第三批国家级非物质文化遗产名录后,衢州的山水人文开始呈现出另外一番景象。其实早在2005年时,打造南孔文化品牌就曾提上过衢州规划议程,但真正的系统性谋划还是2011年之后。近两年,衢州最终敲定了城市品牌构想和框架,2017年正式发布了“南孔圣地•衢州有礼”的城市品牌,准备深耕儒家文化、全力打造“一座最有礼的城市”。
虽然明确城市品牌是前不久的事情,但这昭示着衢州在战略层和文化层的真正自立。衢州的文化层次上升到儒家文化、孔家思想上,小山小水也就有了说辞和气度。衢州的生态城市定位,辅以文化内涵,城市品牌的系统性已经开始建立。
三、生态的富矿
当然,生态、文化城市的定位断了衢州效益工业的后路,不过生态到底是座富矿,用心养护还是能育出宝贝的。以水质来说,衢州能够保持全年水质百分百达标,而且已经连续10年领跑全国。这一方好水的价值有多大?当然不止是塑造山水景观,它还可以出产黑色黄金——鱼子酱。
衢州现在是我国、也是亚洲鱼子酱产量、出口量最大的地区。2017年衢州鱼子酱产量为65吨,产量和出口量居亚洲第一,世界前三。衢州现在出产的大白鲟鱼子酱一小盒售价为2100美元,约合1.4万人民币,相当于一个鱼卵60美分,约合4元人民币。鱼子酱属于奢侈消费品,由于营养价值和售卖价格都很高,被称为黑色黄金。鱼子酱的母体主要是鲟鱼,鲟鱼种类有27种,但能生产鱼子酱的只有3种。这些娇贵的鲟鱼对水质要求十分严格,只有在溶氧含量较高,水质良好的水环境中才能很好生存。国内工业化水平高的城市大都无法满足这样的水质要求,而衢州不同,全地区水质连年保持国内一流水平,而且活水溶氧量很高。不过,鲟鱼是一种冷水鱼,需要生活在夏季水温不超过26度的地方,世界早期的鱼子酱供应国主要是是俄罗斯、欧洲这些北部冷水地区。衢州虽然是江南地区,但是仍有一个地方可以满足这样苛刻水温。
衢州乌溪江上游有两座梯级大中型水库,其发电尾水流入巨化引水渠和乌溪江引水工程,水温始终保持在26度以下, 2013年起这里就建立了世界最大的鲟鱼养殖、加工基地。其实衢州的国产鱼子酱是个什么水平,最开始国内外的心理预期都很低。不过,2017年美国彭博社发表过文章评论这件事情,文章表示”世界上最好的鱼子酱不再产自俄罗斯,尽管没人想承认,但是中国正在生产顶级鱼子酱”,文章中点名赞扬了一家“已经抢占了全球鱼子酱市场头把交椅”的生产企业。
这个企业品牌来自杭州,是全球最大的人工养殖鲟鱼子酱品牌,它的鱼子酱产量和出口量连续三年位居世界第一,而其最主要的的养殖基地在衢州、在乌溪江。在衢州,像鲟鱼养殖、鱼子酱生产这样的高效益生态产业还有很多,生态无疑是一座矿藏,衢州的生态产业虽然许多还在发展期,但未来潜力是无限的。仅是近两年,如果衢州鱼子酱能够坐稳世界市场头把交椅,那么国内市场也会不攻自破。当年衢橘在国人味蕾上失去的尊严,大概很快会通过舌尖上的黄金扳回一局。 • end • 文 | 大蔬本叔图 | 网络
注:本文由新合前哨整理创作,文内所用视频、图片、文字若涉及版权问题,请及时取得联系我们处理相关事宜。|推荐阅读|问诊洛阳的移民症候懂得洛阳的难处 ,就不会再说它落没一千五百万的告别乐清 | 繁荣背后的绝望杭州概览 | 非天赋型城市的进击金字塔|柯桥赌徒【产业经济讨论区】
喜欢文章,希望与 对浙江任意产业经济有独特见解的伙伴 交流的读者,欢迎扫码加群。扫码进入微信关注:新合前哨
衢州:捡历史的彩蛋,挖生态的矿,四线城市表示自己还能抢救一下衢州东港属于衢江区,像沈家,济开发区,总体上出了柯城区的范围都是衢江区了。衢州东港在衢州的东面,东港经济发展快
之前看了Mahout官方示例 20news 的调用实现;于是想根据示例的流程实现其他例子。网上看到了一个关于天气适不适合打羽毛球的例子。
训练数据:
Day Outlook Temperature Humidity Wind PlayTennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
检测数据:
sunny,hot,high,weak
结果:
Yes=》 0.007039
No=》 0.027418
于是使用Java代码调用Mahout的工具类实现分类。
基本思想:
1. 构造分类数据。
2. 使用Mahout工具类进行训练,得到训练模型。
3。将要检测数据转换成vector数据。
4. 分类器对vector数据进行分类。
接下来贴下我的代码实现=》
1. 构造分类数据:
在hdfs主要创建一个文件夹路径 /zhoujainfeng/playtennis/input 并将分类文件夹 no 和 yes 的数据传到hdfs上面。
数据文件格式,如D1文件内容: Sunny Hot High Weak
2. 使用Mahout工具类进行训练,得到训练模型。
3。将要检测数据转换成vector数据。
4. 分类器对vector数据进行分类。
这三步,代码我就一次全贴出来;主要是两个类 PlayTennis1 和 BayesCheckData = =》
package myTesting.bayes;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;
import org.apache.mahout.text.SequenceFilesFromDirectory;
import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;
public class PlayTennis1 {
private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";
/*
* 测试代码
*/
public static void main(String[] args) {
//将训练数据转换成 vector数据
makeTrainVector();
//产生训练模型
makeModel(false);
//测试检测数据
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//将测试数据转换成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"testinput";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失败!");
System.exit(1);
}
//将序列化文件转换成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件转换成向量失败!");
System.out.println(2);
}
}
public static void makeTrainVector(){
//将测试数据转换成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"input";
String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失败!");
System.exit(1);
}
//将序列化文件转换成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件转换成向量失败!");
System.out.println(2);
}
}
public static void makeModel(boolean completelyNB){
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";
String model = WORK_DIR+Path.SEPARATOR+"model";
String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";
Path in = new Path(input);
Path out = new Path(model);
Path label = new Path(labelindex);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean参数是,是否递归删除的意思
fs.delete(out, true);
}
if(fs.exists(label)){
//boolean参数是,是否递归删除的意思
fs.delete(label, true);
}
TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();
String[] params =null;
if(completelyNB){
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};
}else{
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};
}
ToolRunner.run(tnbj, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("生成训练模型失败!");
System.exit(3);
}
}
}
package myTesting.bayes;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.mahout.classifier.naivebayes.BayesUtils;
import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;
import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.vectorizer.TFIDF;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class BayesCheckData {
private static StandardNaiveBayesClassifier classifier;
private static Map<String, Integer> dictionary;
private static Map<Integer, Long> documentFrequency;
private static Map<Integer, String> labelIndex;
public void init(Configuration conf){
try {
String modelPath = "/zhoujianfeng/playtennis/model";
String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";
String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";
String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";
dictionary = readDictionnary(conf, new Path(dictionaryPath));
documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));
labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);
classifier = new StandardNaiveBayesClassifier(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("检测数据构造成vectors初始化时报错。。。。");
System.exit(4);
}
}
/**
* 加载字典文件,Key: TermValue; Value:TermID
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {
Map<String, Integer> dictionnary = new HashMap<String, Integer>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
String name = path.getName();
return name.startsWith("dictionary.file");
}
};
for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {
dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());
}
return dictionnary;
}
/**
* 加载df-count目录下TermDoc频率文件,Key: TermID; Value:DocFreq
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {
Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
return path.getName().startsWith("part-r");
}
};
for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {
documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());
}
return documentFrequency;
}
public static String getCheckResult(){
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String classify = "NaN";
BayesCheckData cdv = new BayesCheckData();
cdv.init(conf);
System.out.println("init done...............");
Vector vector = new RandomAccessSparseVector(10000);
TFIDF tfidf = new TFIDF();
//sunny,hot,high,weak
Multiset<String> words = ConcurrentHashMultiset.create();
words.add("sunny",1);
words.add("hot",1);
words.add("high",1);
words.add("weak",1);
int documentCount = documentFrequency.get(-1).intValue(); // key=-1时表示总文档数
for (Multiset.Entry<String> entry : words.entrySet()) {
String word = entry.getElement();
int count = entry.getCount();
Integer wordId = dictionary.get(word); // 需要从dictionary.file-0文件(tf-vector)下得到wordID,
if (StringUtils.isEmpty(wordId.toString())){
continue;
}
if (documentFrequency.get(wordId) == null){
continue;
}
Long freq = documentFrequency.get(wordId);
double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);
vector.setQuick(wordId, tfIdfValue);
}
// 利用贝叶斯算法开始分类,并提取得分最好的分类label
Vector resultVector = classifier.classifyFull(vector);
double bestScore = -Double.MAX_VALUE;
int bestCategoryId = -1;
for(Element element: resultVector.all()) {
int categoryId = element.index();
double score = element.get();
System.out.println("categoryId:"+categoryId+" score:"+score);
if (score > bestScore) {
bestScore = score;
bestCategoryId = categoryId;
}
}
classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";
return classify;
}
public static void printResult(){
System.out.println("检测所属类别是:"+getCheckResult());
}
}
1. 请介绍一下WebGIS的概念和作用,以及在实际应用中的优势和挑战。
WebGIS是一种基于Web技术的地理信息系统,通过将地理数据和功能以可视化的方式呈现在Web浏览器中,实现地理空间数据的共享和分析。它可以用于地图浏览、空间查询、地理分析等多种应用场景。WebGIS的优势包括易于访问、跨平台、实时更新、可定制性强等,但也面临着数据安全性、性能优化、用户体验等挑战。
2. 请谈谈您在WebGIS开发方面的经验和技能。
我在WebGIS开发方面有丰富的经验和技能。我熟悉常用的WebGIS开发框架和工具,如ArcGIS API for JavaScript、Leaflet、OpenLayers等。我能够使用HTML、CSS和JavaScript等前端技术进行地图展示和交互设计,并能够使用后端技术如Python、Java等进行地理数据处理和分析。我还具备数据库管理和地理空间数据建模的能力,能够设计和优化WebGIS系统的架构。
3. 请描述一下您在以往项目中使用WebGIS解决的具体问题和取得的成果。
在以往的项目中,我使用WebGIS解决了许多具体问题并取得了显著的成果。例如,在一次城市规划项目中,我开发了一个基于WebGIS的交通流量分析系统,帮助规划师们评估不同交通方案的效果。另外,在一次环境监测项目中,我使用WebGIS技术实现了实时的空气质量监测和预警系统,提供了准确的空气质量数据和可视化的分析结果,帮助政府和公众做出相应的决策。
4. 请谈谈您对WebGIS未来发展的看法和期望。
我认为WebGIS在未来会继续发展壮大。随着云计算、大数据和人工智能等技术的不断进步,WebGIS将能够处理更大规模的地理数据、提供更丰富的地理分析功能,并与其他领域的技术进行深度融合。我期望未来的WebGIS能够更加智能化、个性化,为用户提供更好的地理信息服务,助力各行各业的决策和发展。
这块您需要了解下stm32等单片机的基本编程和简单的硬件设计,最好能够了解模电和数电相关的知识更好,还有能够会做操作系统,简单的有ucos,freeRTOS等等。最好能够使用PCB画图软件以及keil4等软件。希望对您能够有用。
1.负责区域大客户/行业客户管理系统销售拓展工作,并完成销售流程;
2.维护关键客户关系,与客户决策者保持良好的沟通;
3.管理并带领团队完成完成年度销售任务。
你好,面试题类型有很多,以下是一些常见的类型:
1. 技术面试题:考察候选人技术能力和经验。
2. 行为面试题:考察候选人在过去的工作或生活中的行为表现,以预测其未来的表现。
3. 情境面试题:考察候选人在未知情境下的决策能力和解决问题的能力。
4. 案例面试题:考察候选人解决实际问题的能力,模拟真实工作场景。
5. 逻辑推理题:考察候选人的逻辑思维能力和分析能力。
6. 开放性面试题:考察候选人的个性、价值观以及沟通能力。
7. 挑战性面试题:考察候选人的应变能力和创造力,通常是一些非常具有挑战性的问题。
需要具体分析 因为cocoscreator是一款游戏引擎,面试时的问题会涉及到不同的方面,如开发经验、游戏设计、图形学等等,具体要求也会因公司或岗位而异,所以需要根据实际情况进行具体分析。 如果是针对开发经验的问题,可能会考察候选人是否熟悉cocoscreator常用API,是否能够独立开发小型游戏等等;如果是针对游戏设计的问题,则需要考察候选人对游戏玩法、关卡设计等等方面的理解和能力。因此,需要具体分析才能得出准确的回答。