开发方向
最近,地理信息系统(GIS)的开发与应用越来越多的倾向于Web端,Web端开发确实比以C# ArcGIS Engine为代表的C/S开发更具优势,而且可以通过H5轻松实现跨平台。做过进入这个行业有一段时间的人,想起自己在学校时,没有人指导开发,自己苦苦摸索,却事倍功半。写下这篇博文给那些在校的GIS学生介绍一下WebGIS开发的大致路线和入门知识吧。

首先,WebGIS的开发平台主要有以下四类

商业平台
ArcGIS、超图、MapGIS等商业平台,其中以ArcGIS JS开发应用最广,性能也稳定,学习资料和代码也比较多。

开源平台
开源WebGIS平台很多,如OpenLayers、Leaflet等,其中OpenLayers的应用最为广泛,功能也最强大,而且一直在更新,使用者众多。比较有意思的是,在之前打开MapGIS的Web开发代码,居然发现了OpenLayers的JS文件。

百度、高德等地图平台
这些平台虽然不是为GIS而生,但是其定期更新的地图,省去了开发时搭建地图服务器的麻烦。很多非GIS开发人员也能轻易开发。对于个人或者非商业的应用是免费的,实际开发过程中,也有很多不侧重与GIS开发的公司在进行百度等地图平台的开发。

基于WebGL或其他图形语言的底层开发
前面三个说的都是二次开发,有一次强调自己品牌和地位的公司会基于WebGL或其他技术进行更底层的图形发开,对开发人员的GIS知识和算法准备有很高要求。开发周期长,前期投入较多,进行此类开发的人员较少。

开发技能掌握
如果你是一个想进入WebGIS开发的人员,或者在书本前徘徊迷茫的GIS学生,下面就是你做WebGIS开发需要准备的技能

知识结构
进行WebGIS开发之前,你一定要有这样的清晰的模型,WebGIS是如何工作的,地图是如何展示出来的。你需要了解以下名词和它们之间的关系:

地图服务器
地图服务(OGC、WMS、WFS、TMS、WMTS)
GeoJson
地图切片
后台
开发基础
Html5、CSS、JavaScript——Web开发共同基础
ES6——JavaScript的新一代标准,新版本的WebGIS平台多依赖于ES6
基于一定的后台开发的经验或知识,毕竟要从html页面去后台查询空间数据信息
ArcGIS等商业平台开发入门
虽然商业平台比较多,这里就说应用最广的ArcGIS JS开发,写文章时,最新版本是ArcGIS API for JavaScript4.8。

ArcGIS Desktop基础操作——会数据简单处理,坐标系转换

ArcGIS Server——可以发布各类地图服务

ArcGIS API for JavaScript可以调用各类地图服务

可以使用ArcGIS Server发布空间处理服务(更高级要求)

OpenLayers等开源平台开发
GeoServer——类似于ArcGIS Server,开源地图服务器,一般与开源地图平台搭配

Udig——用来配置GeoServer中地图样式

PostgreSQL与PostGIS——开源空间数据库,存储数据,简单分析

高德等地图平台
如果你会了前面两类开发,百度、高德、腾讯地图等也不觉得有什么难度了。会JavaScript语言,对照着官方的开发文档和教程,很容易就写出来了。

总结
基于WebGL或其他图形语言的底层开发不适合GIS新人去做,需要你工作几年,自己总结出一些东西,再做的话,做出来的更实用,开发的过程中也就知道哪里应该优化。

GIS开发人员,不明白时,开发文档和官方Demo是最好的老师。经常遇到很多人,官方开发文档和Demo有的东西,还去问别人,这样做,没有人愿意给你讲太多的。
———————
作者:gisuuser
来源:CSDN
原文:https://blog.csdn.net/gisuuser/article/details/81938628

本文非常干,所以保存自己学习

转自

公众号ID:航模与无人机资讯

为何实际飞行过程中需降低分辨率?

规范要求:根据《CH/Z_3005-2010低空数字航空摄影规范》

5.2.1 地面分辨率的选择:

原理:

理想情况下,飞机和摄影基准面是保持一定相对高度的。维持某特定高度即可获取一定分辨率的图。而实际上,被摄地表往往是略有起伏的,会导致分辨率降低。如下图所示:

小编以A7R2 35mm镜头为例,理想情况如左边的飞机,在航测过程中与摄影基准面保持在390米相对高度,即可得到分辨率为5cm/pix的图,而实际情况可能存在右图的情况,由于相对高度的抬升导致实际只能得到分辨率为5.8cm/pix的成果。

实际操作经验与建议
1.在实际飞行过程中,应根据规范要求,结合实际地形,将航高适当调低;

2.目前国内众多无人机厂商一般所说的按多少分辨率能飞多少平方公里,大部分都以理想情况来计算。实际还是要根据使用者所在地区去看实际使用效果。但非山区地形一般偏差不会太大。

重叠率一般如何设置?

规范要求: 根据《CH/Z_3005-2010低空数字航空摄影规范》

7.1.1 像片重叠率应满足一下要求:

a) 航向重叠率一般应为60% ~ 80%,最小不应小于53%;

b) 旁向重叠率一般应为15% ~ 60%,最小不应小于8%。

实际操作经验与建议
1. 平地飞行时,微型固定翼(EPO等材质、翼展2m以下)一般旁向重叠率设置在65%-80%之间,航向重叠率设置在75%以上;

2.平地飞行时,大型固定翼(玻璃钢、油动等2.5m翼展以上)一般旁向重叠率设置在50%-60%之间,航向重叠率设置在65%以上。

顺逆风飞好还是侧风飞?

规范要求: 根据《CH/Z_3005-2010低空数字航空摄影规范》

7.1.3 像片旋角:一般不大于15°,确保重叠率满足要求前提下,最大不超过30°

原理:

理想情况下,飞机是沿着航线走的,但是在侧面抗风状态下,需要扭转航向使得一部分分力用于抵抗侧风的影响。成像效果如下图所示

实际操作经验与建议
1.看上图即可得,肯定是顺逆风的航片,无论重叠率还是旋角都优于侧风时候的航片;

2.以上建议只适用于小风天气下,大风天气下会带来另外一个问题,由于飞机顺风情况下地速过快,可能导致相机拍照反应不过来,最终导致漏片现象;

3.实测很多相机,最小拍摄间隔时长为1.5-2秒,低于此拍照间隔时长容易出现漏拍现象,

各位飞手可根据顺风时候的地速代入下面公式,若满足则可顺逆风飞行;若不满足则需增加一定抗风角度,利用飞机抗风的过程减小地速。

顺风时的地速(m/s) 纵向拍摄间距(m)/相机最小拍摄间隔(s)

巡航空速(m/s)+风速(m/s) 纵向拍摄间距(m)/相机最小拍摄间隔(s)

下面要讲的内容比较多,但是是重点。有些人说他们规划航线要耗费上一两个钟,有些人分分钟就做好了……这是为什么呢?

区别主要在航摄分区的划分上面,尽管目前国内有无人机厂家宣称其地面站能进行自动高层分区,但由于没有亲自评测,不好评说。

我们uavnews团队内的老航测员对此方法的传统做法进行了梳理:

关于大高差地形的分区规划

规范要求:根据《CH/Z_3005-2010低空数字航空摄影规范》

5.2.2 (b) 分区内的地形高差不应大于1/6航高

原理:

分区最低海拔高度 + 1/6航高高度= 分区最高海拔高度

    高于分区最高海拔的地方易造成重叠率不足,低于分区最低海拔的测区容易造成分辨率不足,需定义为下一分区的测区范围。

绿色区域为该航高下可拍摄的区域

实际操作经验与建议
1.在实际操作中,基于现有市场价格考虑,无人机一般按照 1/4 和 1/3 航高规划,既能节约一定架次成本,又能满足国内测绘市场制图需求;

2.之前看到有种航线,贴着地形飞,每条航线虽然都是水平但是高度都不同,这种航线实践操作后发现精度非常差,有时内业空三解算都无法过。还有种完全贴着地表,跟着地表起伏飞,这种就更不用说了……

有高差地形的测绘分区规划方法
提前准备及说明内容:

1.安装谷歌地球

2.画出测区Kml,小编以我附近的深圳梧桐山为案例测区

3.以 A7R2 搭配 35mm镜头 为例,按照1:1000比例尺(实际规划也就是8cm/pix)作业。在次基础上,理论航线相对高度应为620米。

规划步骤:

1.首先查看测区的最高和最低点,查询方法如下:

可查出案例测区最高海拔约为860米,最低海拔约为60米。

2.按我们上述所说的620米的1/3也就是206米。由于测区最低海拔高度为60米,所以

最高海拔60 + 206 = 266米

基准面是60 + 206/2 = 163米

航线绝对高度为60 + 620 = 680米

简而言之,以60米为最低海拔、往上抬高206米的区域作为此分区的测区。

为帮助理解,可查看上图

3.用第2点的方法,将海拔高度设置为266米,重新勾画新的Kml区域。

4.以此类推, 第2个分区

最低海拔266米(也就是第1分区的最高海拔)

最高海拔266 + 206 = 472米

基准面为266 + 206/2 = 369米

航线绝对高度为266 + 620= 886米.

将测区海拔抬高到472米,根据第1个分区规划第2个分区的测区。如下图所示:

5.后续步骤原理相同,即可得其他分区

 规划完成后,特别注意一点,在每个分区上空飞行的航线高度,均为同一海拔高度,不会出现上下起伏的飞行方法。此方法规划时间虽然较长,方法掌握也需要一定时间,但可有效解决内业出图的精度问题,或其他类似空三跑不过等问题。

从秭归县茅坪港乘船上行,船还未到兵书宝剑峡口,左岸一座犹如斧削的山体赫然映如眼帘,仿佛一只手臂插入江心。远远望去,一道道裂缝将巨大的山体分割成片状和块状,大有分崩离析之势。

站在船头,链子崖危岩体上地质工作者用混凝土浇筑的一层层“铠甲”和一个个铆钉般棱角分明的水泥墩清晰可见。同行的专家说,链子崖危岩体经过地质科技人员和施工队伍5年的努力拼搏,于1999年8月全面竣工,在经过了近20年的监测和三峡水库坝前175米蓄水检验后,运行效果良好。

链子崖危岩体位于湖北省秭归县新滩镇(现改称屈原镇)长江南岸的临江陡崖上,距三峡大坝仅25公里。在南北长700米、东西长210米的岩体上,被58条宽大裂缝所切割,形成了总体积达300多万立方米的危岩体,成为长江航道咽喉的严重隐患,是威胁三峡大坝的一颗“定时炸弹”。

链子崖危岩体有长期的崩滑史,其中1030年、1542年两次崩滑分别导致长江断航21年和82年。1964年以来,山上时常滚石入江,给航运构成严重威胁。1985年链子崖对岸新滩发生3000万立方米的大滑坡,将有900年历史的新滩镇推入长江。一位目击者曾回忆,滑坡入江时激起浪高70米,涌浪39米,击翻机动船只13艘,造成10余人死亡,滑坡岩土占据长江航道30%,被迫停航12天。

新滩滑坡后,长江航道已偏向链子崖,一旦危岩体崩塌,势必造成堵江断航,并直接影响三峡大坝的建设和安全。按专家当时的估算,直接经济损失将高达30亿元。

如今,链子崖危岩体治理工程已竣工近20年。我们坐在现场监测中心的处理机房,通过一个个监测点和纵横交错的监测网线,短短几分钟,便可采集到监测数据并对其做出技术处理。承担这项工作的技术人员介绍说,链子崖危岩体监测系统设置各种监测点135个(处),是一个多手段、立体化、数据采集部分自动化、计算机数据自动处理的预测预报系统,将及时、准确地对危岩体的稳定性及变形趋势进行分析、预测和预报。

1999年链子崖危岩体防治工程结束后,监测工作由防治工程施工监测转入防治工程效果监测阶段,并对危岩体的治理效果和稳定性进行评价,对危岩体的发展趋势进行预测。通过监测表明,链子崖危岩体主体工程从锚固开始到竣工以来,其岩体变形已趋于稳定,危岩体已停止了持续20多年朝长江临空方向的变形,有的缘缝已逐渐闭合。专家们通过现场鉴定和监测数据分析,认为链子崖监测区域的危岩体变形经历了治理前的明显变形期,防治工程过程中的施工扰动期,工程结束后的应力调整期,再到现阶段的相对稳定期,工程运行效果良好。

经过地质科技工作者治理后的链子崖,已形成了一处处新的景观。2004年6月,湖北省秭归县屈原镇开发链子崖,修建集登山、览胜、地质探险于一体的风景区,依山建“祝融”雕像、“橘颂园”、归乡寺、瓦岗寨、招魂台等大小景点百余个。在山下仰望,链子崖直逼云天,裂缝森然,摇摇欲坠;攀登链子崖,沿着古人在悬崖上开凿的栈道和链子攀登到山顶,巨大的崩滑体被一根根钢索牢牢的固定在山体上;崖顶俯瞰,江流如线,行船如蝼似蚁,危岩体治理奇观、西陵峡风光、高峡平湖胜景尽收眼底,一览无余。在15个主要景点中,就有链子崖一、二号裂缝、地质博物馆、链子崖治理纪念碑等。

在临江绝壁条件下实施的链子崖危岩体综合治理工程,在三峡库区乃至国内外地质灾害治理中实属罕见,已成为我国重大地质灾害防治工程的样板工程。

连续15年实现地质灾害防治零死亡

三峡,自古就是无峰不雄、无滩不急的天堑险绝之地。而当一个巨大狭长的湖泊慢慢取代原来的长江河道后,库区两岸各种古老的和新生的地质灾害体更是纷纷活动,给三峡工程的建设运行、移民迁建造成了巨大的障碍,同时对三峡库区人民的生命财产安全构成了严重威胁。及时、有效地防治三峡库区地质灾害,成了政府和人民一场艰巨且代价高昂的战斗。

2001年,国务院决定开展三峡库区地质灾害规模性集中防治。到2009年,三峡库区实施完成崩塌滑坡治理工程435处,库岸防护工程254段、168公里;监测预警项目对库区255处重大崩塌滑坡和预测塌岸段实施专业监测预警,建成26个区县级监测站,组织6000余名监测员对3049处崩塌滑坡和预测塌岸段实施群测群防监测;搬迁避让项目完成568处崩塌滑坡影响区内6.88余万人的搬迁避让。此后,三峡库区地质灾害防治工程进入运行调试,为顺利实现135米、156米和175米试验性蓄水提供了重要的地质安全保障,有效保护了库区人民生命财产安全。长江三峡移民工程地质灾害防治工程于2015年6月通过了国家最终验收。

当记者再次走进库区时,被翻天覆地的变化所吸引和感奋:一座座现代化的新城在峡江两岸崛起,一条条宽阔的公路在峡谷沟壑间延伸,一座座大桥如彩虹飞架,一座座新修的港口码头与高峡平湖亲密接触……一个欣欣向荣的新三峡正以不可阻挡之势在迅猛崛起。

所到之处,当地干部群众无不自豪地说:三峡工程建设,使我们县城的发展至少提前了20年。“新三峡、新万州、新景观”的大幅标牌映入眼帘,164米水位标志时隐时现。三峡工程蓄水后,万州由原来的山城变成了美丽的湖城。

当记者一行在巫山新城布满高楼大厦的街上,寻找我们要去的国土资源局时;当我们为崭新的丰都宽阔而气派的街道、华丽的建筑而惊叹时;当我们在夜幕之中进入华灯初放、流光溢彩的奉节时,如果不是事先知道这些都是一个个地质灾害频繁发生且经过大规模治理的县城,我们还真以为到了深圳、珠海……

今天,在三峡库区地质灾害治理取得重大成果,地质灾害治理后续规划付诸实施之际,我们更加深切地感受到“三峡工程的成败关键在移民,移民的关键在地质”这句话的深刻内涵。

在三峡库区地质灾害治理工作中,监测预警工程和信息系统建设的同步实施,对库区地质环境管理和监测预警发挥了非常重要的作用,成为全国地质灾害监测预警体系和信息系统建设的典范。

目前,三峡库区3053处崩塌滑坡和85处塌岸段均实施了群测群防,建立了县、乡、村三级监测网络体系,群测群防地质灾害点均落实了监测人和责任人,共投入技术和监测管理人员438人,群测群防现场监测人员5956人,三级监测网机构在防灾减灾中发挥了非常重要的预测预报和组织管理作用。

三峡库区地质灾害监测预警工程建成后,经过了三峡水库多次蓄水考验,其中专业监测系统已成功监测预警滑坡28处,使受威胁的6911人紧急撤离。群测群防监测系统已成功预警了秭归县千将坪等72处滑坡,使15213人的生命财产得到了有效保护。为预防三峡水库175米蓄水后可能出现的地质灾害险情,三峡库区地质灾害监测预警工程扩大了监测范围,纳入库区地质灾害防治规划的崩塌滑坡4203处,其中对2968处崩塌滑坡塌岸实施了监测预警,监测涉及保护57.7万人。如今,三峡库区地质灾害防治已连续15年实现“零死亡”。

防灾减灾和新生隐患防治成为重点

三峡水库开始蓄水以来,“零伤亡”是一个了不起的成绩。水位到达175米以后,随着每年水位的消落变化,未来两岸边坡的稳定,可以说是最大的考验。

对此,中国三峡集团有关负责人说,三峡库区地质灾害越来越少了,这是肯定的。第一,全世界没有一个工程像三峡这样,对整个水库淹没区所涉及到的自然边坡做了这么大规模的调查治理,花了这么多费用。第二,三峡水库蓄水后,改变了两岸的受力条件,有一个库岸再造的过程,有那么个三、五年的水位涨落,基本上就可以稳定下来。

经过国家有关部门批复,三峡库区地质灾害防治后续规划(2011年—2020年)相继实施。通过预防为主,以避险搬迁为必要手段,以监测预警为根本措施,进一步加强三峡库区蓄、退水期的地质灾害防治工作,确保三峡库区人民群众生命财产安全。截止目前,湖北省、重庆市开展了地质灾害工程治理实施项目241个,其中完工168个、在建73个;完成了4811处群测群防点和191处专业监测点建设和运行,完成了库区区县监测站、应急中心及省市地质环境监测总站等能力建设,配置了地质灾害应急车辆、监测和应急仪器等;完成了后续规划1302处搬迁避让项目的范围核定,并提交移民部门组织实施。

据三峡库区地质灾害防治工作指挥部有关专家介绍,三峡库区地质灾害防治后续规划实施以来,已经实现了三个方面的转变。一是工作方式从保蓄水的应急性防治逐渐转向了保运行的常态化管理。二是工作任务从治理已知隐患转向了防治新生灾害和持续治理遗留隐患并重。三是工作重点从组织治理工程实施转向以防灾减灾为主,取得了显著的防灾减灾成效。

第一,为三峡库区移民迁建城镇建设提供了保障。有效保护了库区移民迁建城镇、港口、码头和公路等复建设施以及文物古迹,保护了三峡工程正常运行和长江航运安全,为库区经济社会发展提供了地质安全保障。

第二,为三峡库区人民生命财产安全提供了保障。通过监测预警体系建设和运行,建成了地质灾害监测预警网络,实现了对地质灾害点的实时监控,专业监测和群测群防、互联网与监测预警技术得到深度融合,防治方式由传统向自动化、数字化和网络化转变,监测预警智能化和专业化进一步提高,建立了群测群防“四重网格”和“四位一体”管理体系,实现了及时预警和避险,有效保护人民生命财产安全。

第三,有力支撑了库区经济社会协调发展。地质灾害治理项目与移民迁建城镇的市政工程建设相结合,美化了库区城市环境,开发利用了有限的土地资源。在防治过程中兼顾社会效益、环境效益和经济效益,最大程度地发挥了地质灾害防治资金的综合效益。

夜幕降临,江涛依然。乘船驶出西陵峡口,高峡平湖景色和三峡大坝雄姿一览无余。举世文明的长江三峡水利枢纽工程和沿江两岸的一项项地质灾害治理工程,向人们展示着人类的近代文明和科学技术水平,让人们在认识自然到战胜自然的过程中,进一步体会了自然的神奇和人定胜天的伟力。

贵州省地质灾害综合防治体系建设方案以“1155工程”(一台多网、一体五位、五台融合、五级管理)为总体思路,以“空-天-地”一体化调查方法和大数据防灾技术为手段,开展地质灾害调查评价、监测预警、治理工程和能力提升等“人防+技防”的防治体系建设,全面提升全省地质灾害综合防治能力,为构建百姓富、生态美、人居安的多彩贵州提供地质环境安全保障。

街拍宜低调,别带大包包  轻装相机小,逢人面带笑,高感黑白片,旁轴大光圈  预先测好光,善用景深表。

广角重主题,长焦压缩景

 

利用广角镜头拍摄是风光摄影中最常见的选择之一,

特别是一些大场景,

能显得画面大气、宽广,而不拘谨。

有些场景单纯用广角镜头拍摄还不够,

往往利用接片的形式后期合成。

长焦镜头的特性由于对场景起到了一定的压缩作用,

同广角镜头正好相反,

特别适合拍摄远距离、局部特写等。

如某一特定的场景表现。

小光圈景深,全开糊背景

 

小光圈景深大,焦点范围就大,

能起到大场景清晰度和细节表现的作用。

大光圈景深浅,焦点范围也就小,

能起到突出主题,虚化背景的作用。

还要跟据镜头的焦距、摄距等来定夺景深的实际应用。

焦距越长、光圈越大,

景深越浅,焦距越短,

光圈越小,景深越大,

同时摄距的长短对景深的控制也有很大关系。

拍花侧逆光,慢门显动感

 

拍摄各种花卉利用侧逆光是常用的手法,

其优点是由于光线的原因,

使画面具有层次感、立体感,

同时也能使花卉显得透明、质感也能充分表现出来,

也能形成明暗的鲜明对比,突出主题。

有些特殊的花卉可以利用慢门操作,

形成动静结合的意想不到的意境和效果。

溪流宜长曝,绵绵又密密

 

一般情况下,见到有瀑布、溪流等场景时,

大部分可以利用慢门、长时间曝光,

可以使画面呈现出绵绵细雨的感觉,别有一番情调。

但也可以根据自己的创意,利用高速快门拍摄,

来凝固住水珠等场景,将又会是一种景象。

总之,要根据你的个人爱好来决定了。

见山寻侧光,见水拍倒影

 

见山寻测光的目的就是利用阳光的低照度,

会使场景富有层次和立体感,

而不至于使画面平平,缺乏冲击力。

见水拍倒影也是摄影人常用的手法之一,

特别是在风和日丽、无风五雨的情况下,

水面就像一面镜子,

利用可以利用的场景拍出倒影的作品更具有诗情画意。

对焦对主题,水平要抓平

 

对焦对主题,这是摄影人最基本的操作规程之一,

焦点在哪里,主题就在哪里,这是法则。

拍摄风光摄影作品的首要问题就是地平线的平衡,

不可东倒西歪,画面失调,失去平衡等现象,

尤其对风光摄影就更为重要了。

长曝避车灯,岩石要湿润

 

在夜景拍摄时,最忌讳的就是强光的照射,

比如强光刺眼的汽车前大灯、探照灯以及路灯等,

由于夜景拍摄一般都属于长时间曝光,

如果不避讳以上强光的照射而选在画面里,

毫无疑问,最终的结果就是严重过曝。

拍摄岩石时,最好选择雨后或者是湿润的岩石,

因干燥的岩石拍出的效果会

显得苍白、干渴、缺乏质感和层次。

湿润的岩石最能显示出色彩、质感和纹理的表现。

有云天要多,无云地为主

 

有云天要多,

无云地为主是风光摄影中最为常用的顺空溜之一了,

大部分摄影人都能理解这两句话的含义,

蓝蓝的天空,漂着厚厚漂亮的白云,

是摄影人最为幸福、最为振奋的时刻,

再具有震撼的魅力场景加以衬托,

大片就出自你的手中了。

无云的天空往往是缺乏层次、灰暗一片,

所以,还是少取些天空,以地面为主题为好。

偏光去反光,渐变平反差

 

使用偏光镜或渐变镜是摄影人必须要弄清楚的问题,

偏光镜的特性也就是能更好的除去场景的

一些杂乱、刺眼的反光现象,

渐变镜能够平衡光线的反差。

特别是渐变镜在摄影当中最为常用,

除了能够平衡光线的反差外,

在与阳光成45度左右拍摄的情况下,还能压暗天空,

使天空更蓝、白云更白的效果。

摘要:本文主要介绍一款无人机航片后期处理软件——Agisoft Photoscan,手把手教你完成航片正射影像拼接、生成DEM。

PhotoScan是一款基于影像自动生成高质量三维模型的软件。使用时无需设置初始值,无需相机检校,利用最新的多视图影像三维重建技术,就可以对具有影像重叠的照片进行处理,也可以通过给予的控制点生成真实坐标的三维模型。
无论是航拍影像还是高分辨率数码相机拍摄的影像都可以使用这个软件进行处理。整个工作流程无论是影像定向还是三维模型重建过程都是完全自动化的。
PhotoScan可生成高分辨率真正射影像和带精细色彩纹理的DEM模型。使用控制点可达5cm精度。完全自动化的工作流程,即使非专业人员也可以在一台电脑上处理成百上千张航拍影像,生成专业级别的摄影测量数据。

航片拼接软件有很多,之前我们使用过Pix4D、Global mapper、EasyUAV、Photoscan,几款软件用下来,无论是操作流程,还是出图效果和速度,Photoscan的表现都要好于其他几款。

Photoscan是俄罗斯的东西,正版价格4万左右,但是提供30天全功能试用。对电脑硬件的依赖也比其他要低。很多人在用的Pix4DMapper是瑞士一家公司的产品,功能上和Photoscan大同小异,但是正版价格可以买2套Photoscan了,而且使用下来,感觉对电脑的要求比Photoscan高不少,16G内存的电脑频频弹窗警告。

PhotoScan优势盘点:
支持倾斜影像、多源影像、多光谱影像的自动空三处理
支持多航高、多分辨率影像等各类影像的自动空三处理
具有影像掩模添加、畸变去除等功能
能够顺利处理非常规的航线数据或包含航摄漏洞的数据
支持多核、多线程CPU运算,支持CPU加速运算
支持数据分块拆分处理,高效快速地处理大数据
操作简单,容易掌握
处理速度快

不足:
缺少正射影像编辑修改功能
缺少点云环境下量测功能

功能介绍:

 

1.软件安装 (安装大概15分钟)
官网下载软件,安装。完成以后,可在“工具”—“偏好设置”目录下,设置语言为中文。

2.航片选取 (耗时大概10分钟)
根据《低空数字航空摄影规范》对于飞行质量和影像质量的要求,“像片重叠度应满足以下要求:a.航向重叠度一般应为60%~80%,最小不应小于53%;b.旁向重叠度一般应为15%~60%,最小不应小于8%。”实际航线规划时,飞行人员应尽可能设置较高像片重叠率,避免出现航摄漏洞,重复飞行,减少作业成本。

无人机航摄完毕,筛选航片,剔除起飞和降落阶段航拍影像,仅保留无人机航线飞行阶段拍摄的照片。

3.新建项目(1分钟搞定)
打开PhotoScan软件,在左侧工作区点击“添加模块”按钮,添加模块,软件自动创建新项目,准备导入航片。

添加模块

4.照片导入与对齐(1~5分钟)
在软件上方工具栏,点击“工作流程”—“添加照片”,选择要拼接的照片,然后照片就进来了。

照片导入
接着点击“工作流程”—“对齐照片”,软件会根据航片坐标、高程信息,相似度自动排列照片。

对齐照片时,软件会弹窗要求选择精度,如果用于现场快速展示航片效果,可以选择低精度,实现照片快速排列。最后点击确认,自动对齐照片。

对齐照片

5.照片拼接处理(10~60分钟)
a.生成密集点云
点击“工作流程”—“建立密集点云”,同样根据需求选择质量。

b.生成网格
点击“工作流程”—“生成网格”,表面模型选择“任意”,源数据选择“密集点云”,面数根据成像质量需求选择“高”、“中”、“低”。

c.生成纹理
点击“工作流程”—“生成纹理”,映射模式选择“正射影像”,混合模式选择“镶嵌(默认)”(此处中文版将mosaic翻译成马赛克有误),纹理大小选择“4096”。

6.拼接成果输出(5分钟)
a.生成DEM
点击“工作流程”—“Build DEM”,参数默认,不用修改。

b.生成正射影像
点击“工作流程”—“生成正射影像”,参数默认,不用修改。

c.成果导出
拼接完毕,点击“文件”可导出拼接成果,正射影像、DEM等。

1.航摄区三维量测
结合GIS软件,可对拍摄对象的距离、面积、体积进行量测。

2、专题图生成
利用拼接的正射影像和DEM,结合GIS软件,可以快速生成一些列专题图,如水土流失防治责任范围图、扰动土地面积图、水土流失面积图、水土保持措施分布图、土地扰动整治图、林草覆盖图、土壤侵蚀强度分布图等。

3、拼接成果展示
拼接处理后,导出正射影像Google kmz文件,实现影像与Google earth叠加,可展示拍摄成果、影像信息再挖掘。

原文转载于刘同大师微博,转载此文仅用于刺激本人,无作他用

这些年,能一开始就让我从心底产生敬意的人都是有自律性的人。 他们每天都在不声不响坚持着自己认定的那些事,有人每天坚持运动,有人每天坚持阅读,有人一天一部电影,一天3000字的文章,每周外出摄影……

慢慢的,他们就是和周围的人不一样了,那种不一样便是自律性带来的独有的味道。

不过我想说的不是自律。而是另一句话:“你能对自己再狠一点吗?”

以前我们说这句话时,是觉得一个人无法给自己下一个结论。是啊,连决定都无法下的人怎么会有未来。

而现在,能对自己“狠”一点,已然不是下决心那么简单,而是看你愿意给自己多长一段时间去做完一件事情。

花五年去学一个专业?觉得生命太短,浪费不了时间。
那花三年去学一门手艺?也不行,那时同龄人早就把自己甩很远了。
那就一年踏踏实实沉浸在一份工作里,别抱怨别退缩?恐怕也不行,我要对得起自己的情绪啊。

用半年坚持学英文做不到,一个月坚持运动做不到,就连一周坚持早起都没办法,但往往这样的人却每天都在说:我很着急,我该怎么办,我的未来在哪里?谁能帮帮我。

你那么丧,和你聊天只能拖垮别人,没人能帮得了你。 真正能帮你的只有时间,但请你给你自己多一点时间。

我28岁的时候存款1万7,还有两年就30岁了,我特别焦虑,觉得男人到了30岁,不功成名存款没有50万就这辈子俨然就失败了。
响哥有次聊天就跟我说:30而立是古人说的,因为古代大家活得都没那么长,很多人40、50就没了。而我们现在动辄就是七八十岁,就算你40岁才走到一半,你着急什么。

那一刻,我突然意识到我离40岁还有12年,12年够我做好多好多事了。

这么一想,觉得自己又回到了刚上大一时的心情,觉得自己离30岁还有12年!这12年我可以安排自己做好多事了。 哪怕这些事情当下都没有结果也无所谓,就当是尝试,等我到了四十岁那年,人生应该会和28岁很不一样吧。

上一篇关于职场候鸟的文章收到了很多读者的回复,其中有读者一直在说“自己已经二十好几了,每天都很着急,也没有一技之长,不知道自己该干什么。” 能干什么,什么好干都是因人而异。

但决定去干一件事情之前,最重要的是先放缓焦虑,想一想自己的人生还长的很,给自己五年?三年?哪怕一年时间认认真真去干一件事,别退缩,别放弃,只要每天都要比前一天学到一些新东西,别说三年了,也许半年之后你就会意识到自己的不同。

希望你能成为一个能对自己真正狠下心的人,不是那种咬牙切齿想干一件惊天动地的事,而是下定决心给自己一段时间,沉到时间里,安安静静的去学习一件事。

当你浮上水面的时候,无论是这个世界,还是你都会变得很不一样。

比如现在的我,尽量每天去学习多一点东西,因为我很想知道自己42岁是什么鬼样子:)

原文地址http://www.wrjfpv.com/teach/7496.html
先说一下实景建模的原理吧,它实际上是通过一个区域内(一个主体)的大量的照片来进行三维化的处理,分为前期拍摄和后期的三维模型生成。

 

前期拍摄主要是要按照一定的顺序和间隔来拍摄,保证被拍摄的物体清晰可见就好,难度基本是没有的,更何况现在有那么多辅助飞行的软件,像最基础的DJI GO ,Litchi, Altizure等,还有最近大疆刚出不久的地面站GS PRO,都能够很轻松的帮助大家完成建模目标的实景采集工作。
后期实景建模阶段,可用的软件也很多,像3DSM PRO, Autodesk Photo Scene Editor,David等,其实原理都是一样的,在这里就为大家介绍一款比较好用的软件:Agisofa photo scan。这个软件流程什么的都比较简单,就是太吃电脑了,我在后面会为大家进行详细的介绍。
长话短说,现在我们开始航拍实景建模的第一步:进行实景扫描。

 

就像上面说的,可以用来做实景建模的软件实在是太多了,比如之前就看到有人用dji go来进行环视的单个物体实景建模,还有人用专门为实景建模做的软件Altizure来进行实景扫描的(不过用过这么多,我还真是觉得Altizure是最好用的,精度高且他是用的四方斜视拍摄外加一块主扫描区的俯视拍摄来建模的,效果会好很多,不会有拍不到的地方)。之前也都有各个大神做过相关软件的详细讲解,我在这就不献丑了,就来用下大疆新出的GS pro吧,也算是做个小的评测。
实景拍摄建模我也分为两个部分:
1. 利用飞行器实飞选点规划拍摄区域
2. 利用离线地图绘制拍摄区域和任务
大家如果用过litchi的都知道,他有个很实用的功能是离线的航点规划设置,能够在不起飞无人机的情况下就预先做好飞行规划和任务设置,大大节省了航拍所需的时间。
GS PRO也有这个功能,但至于好不好用呢,还需等我慢慢道来。

模式一:利用飞行器实飞选点规划拍摄区域

 

打开GS PRO.
能够看到跟打开dji go 还是有区别的,其主屏不是视频源了,而是加载的地图,右下方变成了视频源,在上方能够看到相应的设备信息。
例行检查无误后,开始起飞。
飞到需要定位的点时,点击右边的“定点”以记录第一个点。
以此类推的选取你认为需要的点的位置和区域。

在最后一个点选择完成后,点击“完成”按钮,系统会自动链接最后一个点和第一个点,以形成一个封闭的区域,并自动的生成一个航拍线路的规划,如下图所示:
如上图,能够看到生成的航拍扫描飞行线路,基本的任务信息和飞机的基本设置,可以根据实际的拍摄需要来进行调整
其中
“拍照模式”一般选择“等距离间隔拍照”更加准确一点。
“航线生成模型”选择“区内模式”
“飞行速度”默认9km/h,不宜过快,但可适当调高
“飞行高度”可自由设定,并且后方会根据每个飞行高度来算出照片的分辨率,一般来说越高分辨率越低。
在高级设置中,我们可以调整所生成航线的各个参数
“主航线间图像重复率”表示在这个区域中航线的密集程度,数值越高越密集,所拍摄的照片越多,飞行时长也会更长。
“主航线角度”可以调整扫描这个区域的飞行器角度,可以选择是横向扫描还是成一定角度扫描。
“边距”表示航线在选定区域飞行时所靠近选取边缘的距离,这个距离也可以理解为安全距离,防止飞机在选取边缘与其他物体碰撞。
“云台俯仰角度”可以调节拍照的角度,以获得更佳的建模效果,一般来说对一个区域进行建模,垂直向下-90度就可。

 

“任务完成动作”一般选择悬停以等待下一步指令。
点击“保存任务”,然后点击右上方的“执行任务”

 

点击后会弹出一个“准备飞行任务”清单,上面有相关的数据信息,包括飞机型号,卫星颗数,指南针状态等。等最后一项航点上传完成,只有都是显示绿色既自检通过后,才可点击“开始飞行”,此时飞机会自动按照之前的预设来进行飞行和拍摄,只需要飞手监视就好。

 

在飞行途中,若需要返航或者终止任务,点击右上方的暂停按钮,飞机会终止任务,并切回飞手控制状态。
因为很多飞行辅助app都会有“断点再续”功能,所以我也测试了GS PRO的“断点再续”功能,让其飞回更换电池,看其是否能够准确的找的上次的断点。

 

更换电池后,点击“从中断点开始”,飞机会自动找的上次飞行记录的中断点,从此开始继续之前的任务。
等待所有航点都飞行完成后,系统会自动弹出“任务完成”提示,同时结束任务悬停等待。

模式二:利用离线地图绘制拍摄区域和任务。
通过刚刚的讲解我们也能看到,这样的效率其实很低,而且更重要的一点是很费电,对于本就不多的无人机电池续航时间来说更是致命的。所以我们可以选择一种更加高效的方法,采用离线地图绘制拍摄区域和任务。
这种方法虽然高效,但我个人就目前而言还是不推荐使用这种方法的,一个很重要的原因就是地图的精度问题
GS PRO使用的是高德地图,或许平时我们用手机的高德地图时还会觉得是很准的,但是无人机航拍实景选点,尤其是在地图上选点,需要相当高的地图精度,才能够保证所选的区域与目标区域一致,不发生错位。
看似就是一个错位问题,但问题可大可小。轻则可能导致你建模区域选择偏移,重则可能会撞到周边的建筑物导致炸鸡。
高德地图在GS PRO中精度真的是差强人意,我试了好几次都不是特别精准,有一两次感觉选点都能差到10m以上,这对于在周围有突出物体建筑物旁进行区域建模是十分危险的。而且你仔细看就会发现,地图感觉还是好几年以前的数据,好多都没更新。

 

但介于GS PRO 有这个功能,还是在这里捎带的讲一下

 

点击“地图选点”
跟之前的步骤都一样,从“基础设置”的参数到“高级设置”的参数。

 

要特别注意的是“飞行高度”,要事先知道周围物体的大致高度。

WX20170221-224716@2x.jpg (1.61 MB, 下载次数: 0)

下载附件  保存到相册

2 天前 上传

设置好各个参数后,点击左上方的“保存任务”按钮
之后连接飞行器,找的之前保存的任务就可以直接进行任务

转自http://www.cnblogs.com/kevingrace/p/8343060.html

同时参考:https://blog.csdn.net/qq_36731677/article/details/79501993

搭建个人云存储一般会想到ownCloud,堪称是自建云存储服务的经典。而Nextcloud是ownCloud原开发团队打造的号称是“下一代”存储。初一看觉得“口气”不小,刚推出来就重新“定义”了Cloud,真正试用过后就由衷地赞同这个Nextcloud:它是个人云存储服务的绝佳选择。可以说Nextcloud 是一款自由 (开源) 的类 Dropbox 软件,由 ownCloud 分支演化形成。它使用 PHP 和 JavaScript 编写,支持多种数据库系统,比如 MySQL/MariaDB、PostgreSQL、Oracle 数据库和 SQLite。它可以使你的桌面系统和云服务器中的文件保持同步,Nextcloud 为 Windows、Linux、Mac、安卓以及苹果手机都提供了客户端支持。同时,Nextcloud 也并非只是 Dropbox 的克隆,它还提供了很多附加特性,如日历、联系人、计划任务以及流媒体 Ampache。

与ownCloud相比,Nextcloud的功能丝毫没有减弱,甚至由于可以安装云存储服务应用,自制性更强,也更符合用户的需求。Nextcloud官网的帮助文档写得相当地详细,几乎任何关于Nextcloud的问题都可以找到答案,这说明Nextcloud开发团队确实比ownCloud更加优秀。

一开始以为Nextcloud只是一个网盘云存储,后来看到Nextcloud内置了Office文档、图片相册、日历联系人、两步验证、文件管理、RSS阅读等丰富的应用,我发现Nextcloud已经仅仅可以用作个人或者团队存储与共享,还可以打造成为一个个人办公平台,几乎相当于一个个人的Dropbox了。

以下内容将介绍如何在 CentOS 7 服务器中安装和配置最新版本的 Nextcloud 12,并且会通过 Nginx 和 PHP7-FPM 来运行 Nextcloud,同时使用 MariaDB 做为数据库系统。Nextcloud云盘环境部署后,可以实现web网页端、手机移动端和桌面客户端三者数据同步,其中桌面客户端可以在本地设置一个文件夹,用于同步数据,这样也就相当于在本地备份了数据。同时客户端只要设置开机启动,即只要是启动状态中,它和网页端的数据就是自动同步的。废话不多说了,直接看部署笔记:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
部署机器的系统是Centos7.4版本
[root@nextcloud-server ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
   
一、安装并配置Nginx和php-fpm
================================================================
将自带的epel、nginx、php全部卸载(rpm -e ... --nodeps)
[root@nextcloud-server ~]# rpm -qa|grep php
[root@nextcloud-server ~]# rpm -qa|grep php-common
[root@nextcloud-server ~]# rpm -qa|grep nginx
===============================================================
CentOS默认的yum源中并不包含Nginx和php-fpm,首先要为CentOS添加epel源:
[root@nextcloud-server ~]# yum -y install epel-release
[root@nextcloud-server ~]# yum -y install nginx
   
需要再添加一个yum源来安装php-fpm,可以使用webtatic(这个yum源对国内网络来说恐怕有些慢,当然你也可以选择其它的yum源)
[root@nextcloud-server ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
 
安装php7-fpm和一些其它的必要的组件
[root@nextcloud-server ~]# yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel
 
完成后,检查一下php-fpm是否已正常安装
[root@nextcloud-server ~]# php -v
PHP 7.0.25 (cli) (built: Oct 29 2017 13:43:03) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
   
配置php-fpm
[root@nextcloud-server ~]# vim /etc/php-fpm.d/www.conf
.....
user = nginx                                   //将用户和组都改为nginx
group = nginx
.....
listen = 127.0.0.1:9000                        //php-fpm所监听的端口为9000
......
env[HOSTNAME] = $HOSTNAME                     //去掉下面几行注释
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
   
/var/lib目录下为session路径创建一个新的文件夹,并将用户名和组设为nginx
[root@nextcloud-server ~]# mkdir -p /var/lib/php/session
[root@nextcloud-server ~]# chown nginx:nginx -R /var/lib/php/session/
[root@nextcloud-server ~]# ll -d /var/lib/php/session/
drwxr-xr-x. 2 nginx nginx 4096 1月  25 09:47 /var/lib/php/session/
   
启动Nginx和php-fpm服务,并添加开机启动
[root@nextcloud-server ~]# systemctl start php-fpm
[root@nextcloud-server ~]# systemctl start nginx
[root@nextcloud-server ~]# systemctl enable php-fpm
[root@nextcloud-server ~]# systemctl enable nginx
   
二、安装并配置MariaDB
使用MaraiDB作为Nextcloud数据库。yum安装MaraiDB服务
[root@nextcloud-server ~]# yum -y install mariadb mariadb-server
   
启动MariaDB服务并添加开机启动
[root@nextcloud-server ~]# systemctl start mariadb
[root@nextcloud-server ~]# systemctl enable mariadb
   
接下来设置MariaDB的root密码
[root@nextcloud-server ~]# mysql_secure_installation        //按照提示设置密码,首先会询问当前密码,密码默认为空,直接回车即可
Enter current password for root (enter for none):          //直接回车
Set root password? [Y/n] Y
New password:                                              //输入新密码
Re-enter new password:                                     //再次输入新密码
    
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
==============================================================================================
或者采用另一种修改密码的方式:跳过授权表
1)在/etc/my.cnf文件里添加"skip-grant-tables"
2)重启mariadb服务
3)无密码登陆mariadb,然后重置mysql密码
MariaDB [(none)]> update mysql.user set password=password("kevin@123") where user="root";
4)去掉/etc/my.cnf文件里的"skip-grant-tables"内容
5)重启mariadb服务
6)这样就可以使用上面重置的新密码kevin@123登陆mariadb了
==============================================================================================
   
设置完MariaDB的密码后,使用命令行登录MariaDB,并为Nextcloud创建相应的用户和数据库。
例如数据库为nextcloud_db,用户为nextclouduser,密码为nextcloudpasswd:
[root@nextcloud-server ~]# mysql -p
......
MariaDB [(none)]> create database nextcloud_db;          
MariaDB [(none)]> create user nextclouduser@localhost identified by 'nextcloudpasswd';
MariaDB [(none)]> grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'nextcloudpasswd';
MariaDB [(none)]> flush privileges;
   
三、为Nextcloud生成自签名SSL证书
为SSL证书创建一个新的文件夹:
[root@nextcloud-server ~]# cd /etc/nginx/cert/
[root@nextcloud-server cert]# openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/nextcloud.crt -keyout /etc/nginx/cert/nextcloud.key
.....
Country Name (2 letter code) [XX]:cn                                           //国家
State or Province Name (full name) []:beijing                                  //省份
Locality Name (eg, city) [Default City]:beijing                                //地区名字
Organization Name (eg, company) [Default Company Ltd]:kevin                    //公司名
Organizational Unit Name (eg, section) []:Technology                           //部门
Common Name (eg, your name or your server's hostname) []:kevin                 //CA主机名
Email Address []:kevin@wangshibo.cn                                                 
   
然后将证书文件的权限设置为660
[root@nextcloud-server cert]# chmod 700 /etc/nginx/cert
[root@nextcloud-server cert]# chmod 600 /etc/nginx/cert/*
   
四、下载并安装Nextcloud
[root@nextcloud-server ~]# yum -y install wget unzip
[root@nextcloud-server ~]# cd /usr/local/src/
[root@nextcloud-server src]# wget https://download.nextcloud.com/server/releases/nextcloud-12.0.4.zip
[root@nextcloud-server src]# unzip nextcloud-12.0.4.zip
[root@nextcloud-server src]# ls
nextcloud nextcloud-12.0.4.zip
[root@nextcloud-server src]# mv nextcloud /usr/share/nginx/html/
   
进入Nginx的root目录,并为Nextcloud创建data目录,将Nextcloud的用户和组修改为nginx
[root@nextcloud-server src]# cd /usr/share/nginx/html/
[root@nextcloud-server html]# mkdir -p nextcloud/data/
[root@nextcloud-server html]# chown nginx:nginx -R nextcloud/
[root@nextcloud-server html]# ll -d nextcloud
drwxr-xr-x. 15 nginx nginx 4096 1月  24 17:04 nextcloud
   
五、设置Nginx虚拟主机
进入Nginx的虚拟主机配置文件所在目录并创建一个新的虚拟主机配置(记得修改两个server_name为自己的域名):
[root@nextcloud-server ~]# cd /etc/nginx/conf.d/
[root@nextcloud-server conf.d]# vim nextcloud.conf
upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}
    
server {
    listen 80;
    server_name nextcloud.kevin-inc.com;
    # enforce https
    return 301 https://$server_name$request_uri;
}
    
server {
    listen 443 ssl;
    server_name nextcloud.kevin-inc.com;
    
    ssl_certificate /etc/nginx/cert/nextcloud.crt;
    ssl_certificate_key /etc/nginx/cert/nextcloud.key;
    
    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this
    # topic first.
    add_header Strict-Transport-Security "max-age=15768000;
    includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    
    # Path to the root of your installation
    root /usr/share/nginx/html/nextcloud/;
    
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    
    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
    # last;
    
    location = /.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host/remote.php/dav;
    }
    
    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;
    
    # Disable gzip to avoid the removal of the ETag header
    gzip off;
    
    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;
    
    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;
    
    location / {
        rewrite ^ /index.php$uri;
    }
    
    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny all;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }
    
    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        #Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }
    
    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }
    
    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        # Before enabling Strict-Transport-Security headers please read into
        # this topic first.
        add_header Strict-Transport-Security "max-age=15768000;includeSubDomains; preload;";
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        # Optional: Don't log access to assets
        access_log off;
    }
    
    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
    }
}
   
接下来测试以下配置文件是否有错误,确保没有问题后重启Nginx服务。
[root@nextcloud-server conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nextcloud-server conf.d]# systemctl restart nginx
   
六、为Nextcloud设置Firewalld防火墙和SELinux
可以选择关闭Firewalld和SELinux
[root@nextcloud-server ~]# systemctl stop firewalld
[root@nextcloud-server ~]# systemctl disable firewalld
[root@nextcloud-server ~]# setenforce 0
[root@nextcloud-server ~]# getenforce
disable
[root@nextcloud-server ~]# cat /etc/sysconfig/selinux
......
SELINUX=disabled
   
如果打开了防火墙,则需要设置Firewalld和SELinux
首先需要安装SElinux管理工具policycoreutils-python
[root@nextcloud-server ~]# yum -y install policycoreutils-python
   
接着设置SELinux
[root@nextcloud-server ~]# semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/data(/.*)?'
[root@nextcloud-server ~]# semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/config(/.*)?'
[root@nextcloud-server ~]# semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/apps(/.*)?'
[root@nextcloud-server ~]# semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/assets(/.*)?'
[root@nextcloud-server ~]# semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/.htaccess'
[root@nextcloud-server ~]# semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/nextcloud/.user.ini'
[root@nextcloud-server ~]# restorecon -Rv '/usr/share/nginx/html/nextcloud/'
   
接下来设置Firewlld防火墙,为Nextcloud开放http和https两个端口
[root@nextcloud-server ~]# systemctl start firewalld
[root@nextcloud-server ~]# systemctl enable firewalld
[root@nextcloud-server ~]# firewall-cmd --permanent --add-service=http
[root@nextcloud-server ~]# firewall-cmd --permanent --add-service=https
[root@nextcloud-server ~]# firewall-cmd --reload
   
七、安装Nextcloud
解析上面nginx中配置的域名nextcloud.kevin-inc.com,访问访问http://nextcloud.kevin-inc.com进行Nextcloud界面安装(访问http域名会自动跳转到https,安装提示安装即可!)

==================NextCloud安全与性能优化==================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
这种提示一般在NextCloud的服务器管理中可以看到,建议缓存类的直接安装一个即可,安装多了也没有什么用。
为了Nextcloud服务的安全和性能, 请将所有设置配置正确.
PHP 模块 ‘fileinfo’ 缺失. 我们强烈建议启用此模块以便在 MIME 类型检测时获得最准确的结果.
HTTP 请求头 “Strict-Transport-Security” 没有配置为至少 “15552000” 秒. 出于增强安全性考虑, 推荐按照安全提示中的说明启用HSTS.
内存缓存未配置. 如果可用, 需要配置 memcache 以增强性能.
PHP 的组件 OPcache 没有正确配置. 为了提供更好的性能, 我们建议在php.ini文件中使用下列设置:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

==================NextCloud添加Memcached缓存=============

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
修改nextcloud程序目录下的config目录中的config.php文件,在配置文件中添加如下,这个是多个Memcached实例,单个自己改:
 
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
     array('localhost', 11211),
     array('server1.example.com', 11211),
     array('server2.example.com', 11211),
     ),
==================================================================
依据本篇如上安装记录,添加memcache缓存的方法(本机单机安装memcahced)
[root@nextcloud src]# yum -y install memcached
[root@nextcloud src]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
[root@nextcloud src]# systemctl start memcached
[root@nextcloud src]# systemctl enable memcached
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@nextcloud src]# lsof -i:11211
COMMAND      PID      USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
memcached 146026 memcached   26u  IPv4 3320544      0t0  TCP *:memcache (LISTEN)
memcached 146026 memcached   27u  IPv6 3320545      0t0  TCP *:memcache (LISTEN)
memcached 146026 memcached   28u  IPv4 3320549      0t0  UDP *:memcache
memcached 146026 memcached   29u  IPv6 3320550      0t0  UDP *:memcache
修改nextcloud的config配置文件,添加memcached缓存配置
[root@nextcloud config]# pwd
/usr/share/nginx/html/nextcloud/config
[root@nextcloud config]# cp config.php config.php.bak
[root@nextcloud config]# vim config.php
......
  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.distributed' => '\OC\Memcache\Memcached',
  'memcached_servers' => array(
   array('localhost', 11211),
     ),

==================NextCloud添加Redis缓存==================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
在nextcloud的config配置文件中添加如下,这个是通过TCP连接的:
'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
      ),
还有性能更好的UNIX连接:
'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis.sock',
     'port' => 0,
     'dbindex' => 0,
     'password' => 'secret',
     'timeout' => 1.5,
      ),
同时,官方还推荐加入如下,来用于存储文件锁:
'memcache.locking' => '\OC\Memcache\Redis',

========Nextcloud的邮件发信设置========
Nextcloud发送邮件信息的前提:每个用户(包括管理员)都要事先设置好自己的邮箱地址!
1)使用管理员账号登陆Nextcloud。点击右上角的设置图标里的”管理“-“其他设置

前提是管理员(admin)要事先设置好自己的邮箱地址。如下设置好邮箱地址后,按Enter键后就会显示一个”对勾”

满足条件:

1
2
3
1)在admin登陆后的"管理"->"其他设置"的后台里配置好"电子邮件服务器"(配置后可以测试发送邮件是否成功,前提是admin也要事先配置好自己的邮箱地址)
2)各用户创建并登陆后,要记得配置各自的邮箱地址。比如wangshibo用户登录后,配置自己的邮箱地址
3)在分享文件的时候,只要使用对方账号名进行分享,对方邮箱里就会收到一封分享信息的邮件!

如下,在admin账号下分享Nextcloud Manual.pdf这个文件给wangshibo用户

然后登陆wangshibo用户,就会发现Nextcloud Manual.pdf文件已经分享过来了

登陆wangshibo账号配置的邮箱,就会发现有上面分享的邮件信

也可以在文件来源方取消分享

==========云盘上传文件大小限制==============
nextcloud上传文件大小的自身限制为512M,如果要想调整这个大小,操作方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1)修改php.ini上传文件大小限制
[root@nextcloud ~]# vim /etc/php.ini
......
max_execution_time = 0    #默认是30秒,改为0,表示没有限制
......
post_max_size = 10800M    #设定 POST 数据所允许的最大大小,如果POST数据尺寸大于post_max_size $_POST 和 $_FILES superglobals 便会为空.
......
upload_max_filesize = 10240M   #表示所上传的文件的最大大小
#另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.
2)修改nginx.conf
[root@nextcloud ~]# vim /etc/nginx/conf.d/nextcloud.conf
.....
client_max_body_size 10240M;
3)重启php和nginx服务
[root@nextcloud ~]# systemctl restart php-fpm
[root@nextcloud ~]# systemctl restart nginx

==========云盘创建新用户==============
碰到一个问题:在admin管理员登录nextclod,点击右上角的”用户”,创建新用户时候,点击”创建”无反应,即无法在web界面里创建新用户!
此时可以去数据库中创建新用户:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
[root@nextcloud ~]# mysql -pnextcloud@123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 53445
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+----------------------+
| Database             |
+----------------------+
| information_schema   |
| binlog               |
| mysql                |
#mysql50#mysql.mysql |
| nextcloud_db         |
| performance_schema   |
+----------------------+
6 rows in set (0.00 sec)
MariaDB [(none)]> use nextcloud_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [nextcloud_db]> select * from oc_users;
+--------------+---------------------------+----------------------------------------------------------------+
| uid          | displayname               | password                                                       |
+--------------+---------------------------+----------------------------------------------------------------+
| admin        | NULL                      | 1|$2y$10$EeJacmgPRJW1VWcJVyEtA.u37fjWh3YRLvSKN1fxtdYDxRUdM4pSu |
| kevin        | 信息科技部-kevin          | 1|$2y$10$GA18mMkIyZ58eDvE/e6eMuQMJQyWP7BgwyhymuUpykDgWLKQdFotC |
| grace        | 信息科技部-grace          | 1|$2y$10$eCsuuK.ZrWx7qGrMKi88l.myL6GAj33TYtJ9x288SWq7qx25xiFN2 |
添加新用户"wangshibo",密码为"wangshibo@123"
MariaDB [nextcloud_db]> insert into oc_users(uid,password) valuses("wangshibo","wangshibo@123");
再次查看:
MariaDB [nextcloud_db]> select * from oc_users;
+--------------+---------------------------+----------------------------------------------------------------+
| uid          | displayname               | password                                                       |
+--------------+---------------------------+----------------------------------------------------------------+
| admin        | NULL                      | 1|$2y$10$EeJacmgPRJW1VWcJVyEtA.u37fjWh3YRLvSKN1fxtdYDxRUdM4pSu |
| kevin        | 信息科技部-kevin          | 1|$2y$10$GA18mMkIyZ58eDvE/e6eMuQMJQyWP7BgwyhymuUpykDgWLKQdFotC |
| grace        | 信息科技部-grace          | 1|$2y$10$eCsuuK.ZrWx7qGrMKi88l.myL6GAj33TYtJ9x288SWq7qx25xiFN2 |
| grace        | NULL                      | wangshibo@123                                                  |
发现在数据库中创建的新用户的密码是明文保存的。
接着用admin管理员登录nextcloud,点击右上角"用户",就能看到上面在数据库中新创建的wangshibo用户了,然后在这里重置密码!
(重置密码时,输入新密码,然后按"Enter"键回车即可),最后确保用新重置的密码登录wangshibo账号的云盘。
wangshibo账号登录成功后,再登录数据库发现,该用户的密码就会密文保存了!
========================================================================
创建用户组的正确方法:
点击右上角"用户",在"分组"->"添加分组"
也可以登录数据库里创建:
MariaDB [nextcloud_db]> select * from oc_groups;
MariaDB [nextcloud_db]> insert into oc_groups values("运维组");
可以将新用户分组到对应的组内,也可以禁用或删除用户。
点击左下角的"设置",可以显示用户的存储目录,邮件地址等。