# API期末项目 **Repository Path**: deng_ying_xin/api-final-project ## Basic Information - **Project Name**: API期末项目 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-01-23 - **Last Updated**: 2025-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目名称:旅途 ## 一、MVP加/价值主张宣言 | APP名称 | 旅途 | |----------|------------------------------------------------------------------------------| | APP简介 | 旅途是一款能够给当代人们提供优秀的旅游规划,它根据用户所在方位地点给予用户旅游规划,包含路线规划、酒店、以及天气,实现用户从家出发、说走就走的旅游价值。 | | 产品版本 | 1.0 | | PRD文档状态 | 已完成基本内容撰写 | | APP开发主持人 | 邓颖欣 | ### 1.1 **提出问题** * ***==问题情景==*** 现在,人们出门旅游是一个十分难得的事情,除了热爱出门的人,其他人对景点旅游场所了解的并不够多,很多时候并不是资金限制了他们出游,而是时间、规划等因素限制了他们的出游,网上的信息杂乱繁多夹杂着民宿酒店广告,线下的旅游社少旅游方案。 ### 1.2 **解决方案** ![解决方案](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.png "解决方案") 运用了路径规划、IP定位、静态地图、搜索POI、天气系统API,对用户进行出行规划。 ### 1.3**产品描述** 旅途是一款能够给当代人们提供优秀的旅游规划,它根据用户所在方位地点给予用户旅游规划,包含路线规划、酒店、以及天气,实现用户从家出发、说走就走的旅游价值。 ## 二、问题需求 #### 2.1**使用情景&用户画像** ![使用情景和用户画像](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E7%94%A8%E6%88%B7%E7%94%BB%E5%83%8F%E5%92%8C%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF.jpg "使用情景和用户画像") ![用户画像](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E7%94%A8%E6%88%B7%E7%94%BB%E5%83%8F1.jpg "用户画像") #### 2.2**列表需求** 用户需求| 软件增值 | API ---|---|--- (最重要)对出行旅游做出一个规划 |提供的步行、公交、驾车查询及行驶距离| 路径规划 (第二)定位所处位置进行下一步旅游规划 |定位用户所处哪里| IP定位 (第三)查看地图,查看周边的娱乐区域 |提供周边地区的地理位置情况 | 静态地图 (第四)对周边地区的一个查询功能 |提供周边地区的情况,例如娱乐场所的订餐功能停车场功能 | 搜索POI (第五)需要了解当地的天气情况而准备行李 |显示天气状态| 天气系统 #### 2.3**需求论证之利害相关者分析** * ***==利害相关者==*** 用户使用旅途后,会享受到更好的旅游服务以及咨询,以及用户也可以向其他用户分享自己的旅游心得以及经历,避免在旅途中遇到相关的问题麻烦。 * ***==API人工智能类型==*** 路径规划、IP定位、静态地图、搜索POI、天气系统API 因人工智能API的正确率并非百分之百,存在一定的漏洞。错误的内容可能需要用户后期进行自行调整。 * ***==ESG==*** (E)环境 | (S)社会领域 | (G)公司治理领域 ---|---|--- 暂无| 带给相应地区的经济效益| 用户的隐私、地理位置被暴露,存在一定的危险 ## 三、解决方案 #### 3.1 **原型及界面设计** **原型交互链接** **[旅途](https://modao.cc/app/a941c67492b2b6c11b16bc487555042571a93db4?simulator_type=device&sticky) ** ![界面设计](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E7%95%8C%E9%9D%A2%E8%AE%BE%E8%AE%A1.jpg "界面设计") #### 3.2 [**用户旅程**](http://www.woshipm.com/user-research/2537855.html) ![用户旅程](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E7%94%A8%E6%88%B7%E6%97%85%E7%A8%8B%E5%9C%B0%E5%9B%BE.jpg "用户旅程") #### 3.3 **设计的用户可欲性** APP丰富的内容、和方便的功能、整体的API调用性被归为一个区域中,因此用户可以更方便的使用整体性API功能。 #### 3.4 **设计的技术可行性** 因为把API功能规划在一个区域中,调用了路径规划、IP定位、静态地图、搜索POI、天气系统API方便用户查询旅游规划,包含路线规划、酒店、以及天气。 #### 3.5 **设计的商业可行性** 腾讯云、百度智能云提供了一定的免费API调用额度以及优惠的服务套餐,价格十分的便宜,让用户可以免费享受API调用功能,为用户提供更多的功能。 #### 3.6 **输入细节&输出细节** ![输入细节&输出细节](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E8%BE%93%E5%85%A5%E7%BB%86%E8%8A%82%E5%92%8C%E8%BE%93%E5%87%BA%E7%BB%86%E8%8A%82.jpg "输入细节输出细节") #### 3.7 **突出智能交互** - [界面流程图](http://www.woshipm.com/pd/3873765.html) ![界面流程图](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E7%95%8C%E9%9D%A2%E6%B5%81%E7%A8%8B%E5%9B%BE.png "界面流程图") - [功能流程图 ](http://www.woshipm.com/pmd/663549.html) ![功能流程图](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E5%8A%9F%E8%83%BD%E6%B5%81%E7%A8%8B%E5%9B%BE.png "功能流程图") ## 四、解决方案:数据流程及关键智能API使用 #### 4.1 [**数据流程图分析**](https://blog.csdn.net/xianshengsun/article/details/7476122) ![数据流程图](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E6%95%B0%E6%8D%AE%E6%B5%81%E7%A8%8B%E5%9B%BE.png "数据流程图") #### 4.2 **设计的用户可欲性** 通过主页的热门旅游文章和行程规划专区结合,带给用户实用性的旅游规划,同时软件界面清晰,配色干净清新,有专门的广告专区,并没有过多推广,减少干扰。 利用多种方式增加用户增长: ![获取用户](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E7%94%A8%E6%88%B7%E5%A2%9E%E9%95%BF.png "获取用户") #### 4.3 **设计的技术可行性** 通过获取用户输入的地理位置数据,借助路径规划、IP定位、静态地图、搜索POI、天气系统API,在识别后为用户的所在方位地点给予用户旅游规划,包含路线规划、酒店、以及天气,实现用户从家出发、说走就走的旅游价值。腾讯云、百度智能云的成熟技术与且具有较高准确性的人工智能API能够为我们的用户提供稳定且高质量的服务。 #### 4.4 **设计的商业可行性** 目前,市场上的旅游软件很少做到分享/制作旅游规划,并且查询时要跳转很多个软件,本软件可以减少用户跳转时间。当下,人们享受更多的是精神消费,所以市场广阔。 ![商业模式](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E5%95%86%E4%B8%9A%E6%A8%A1%E5%BC%8F%E7%94%BB%E5%B8%83.png "商业模式画布") #### 4.5 **代码及数据展示加值** - **代码展示** ==准备工作== ```python import requests import json from PIL import Image from io import BytesIO # 地理编码、逆地理编码 # 地理编码 def geocode(key,address,city=None,batch="false",sig=None,output='json',callback=None): """获取地理编码""" url = 'https://restapi.amap.com/v3/geocode/geo?parameters' params={ 'key': key, 'address':address, 'city':city, 'batch':batch, 'sig':sig, } r = requests.get(url,params=params) r.json() return r.json() # 逆地理编码 def regeocode(key,location,poitype=None,radius=1000,extensions="base",batch="false",roadlevel=1,sig=None,output="json",callback=None,homeorcorp=0): """获取逆地理编码""" url = 'https://restapi.amap.com/v3/geocode/regeo?parameters' params = {"key": key, "location": location, "poitype": poitype, "radius": radius, "extensions": extensions, "batch": batch, "roadlevel":roadlevel, "sig": sig, "output": output, "callback": callback, "homeorcorp": homeorcorp } r = requests.get(url, params=params) return r.json() ``` ==路径规划== ```python # 步行规划 def walking(key,origin,destination,sig=None,output="json",callback=None): """可以规划100KM以内的步行通勤方案,并且返回通勤方案的数据""" url = "https://restapi.amap.com/v3/direction/walking?parameters" params = { "key":key, "origin": origin, "destination": destination, "sig": sig, "output": output, "callback": callback } r = requests.get(url, params=params) return r.json() # 公交路径规划 def integrated(key,origin,destination,city,cityd=None,extensions='base',strategy=None,nightflag=0,date=None,time=None,sig=None)->dict: """规划综合各类公共(火车、公交、地铁)交通方式的通勤方案,并且返回通勤方案的数据""" url = 'https://restapi.amap.com/v3/direction/transit/integrated?parameters' params={ 'key':key, 'origin':origin, 'destination':destination, 'city':city, 'cityd':cityd, 'extensions':extensions, 'strategy':strategy, 'nightflag':nightflag, 'date':date, 'output':'json' } response = requests.get(url,params=params) data = response.json() return data # 行政区域查询 def district(key,keywords,subdistric,page=1,offset=20,extensions="base",district_filter="adcode",callback=None,output="json"): """根据用户输入的搜索条件可以帮助用户快速的查找特定的行政区域信息""" url = "https://restapi.amap.com/v3/config/district?parameters" params = { "key": key, "keywords": keywords, "subdistric": subdistric, "page": page, "offset": offset, "extensions": extensions, "filter": district_filter, "callback": callback, "output": output } r = requests.get(url, params=params) return r.json() ``` ==效果== ![步行](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E6%AD%A5%E8%A1%8C%E8%A7%84%E5%88%92%E7%BB%93%E6%9E%9C.png "步行") ![公交](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E5%85%AC%E4%BA%A4%E8%B7%AF%E7%BA%BF%E8%A7%84%E5%88%92.png "公交") ==POI搜索== ```python # 搜索POI # 关键字搜索 def poi_keywords(key,keywords,types=None,city=None,citylimit="false",children=0,offset=20,page=1,extensions="base",sig=None,output="json",callback=None): """通过用POI的关键字进行条件搜索""" url = 'https://restapi.amap.com/v3/place/text?parameters' params={ "key": key, "keywords": keywords, "types": types, "city": city, "citylimit": citylimit, "children": children, "offset": offset, "page": page, "extensions": extensions, "sig": sig, "output": output, "callback": callback } response = requests.get(url,params=params) data = response.json() return data # 周边搜索 def place_around(key,location,keywords=None,types="050000|070000|120000",city=None,radius=3000,sortrule="distance",offset=20,page=1,extensions="base",sig=None,output="json",callback=None): """在用户传入经纬度坐标点附近,在设定的范围内,按照关键字或POI类型搜索""" url = 'https://restapi.amap.com/v3/place/around?parameters' params = { "key": key, "location": location, "keywords": keywords, "types": types, "city": city, "radius": radius, "sortrule": sortrule, "offset": offset, "page": page, "extensions": extensions, "sig": sig, "output": output, "callback": callback } response = requests.get(url,params=params) data = response.json() return data ``` ![POI搜索](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/POI%E6%90%9C%E7%B4%A2.png "POI搜索") ![搜索周边娱乐](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/POI%E6%90%9C%E7%B4%A22.png "周边娱乐") ==IP定位== ```python # IP定位 def ip(key,ip,sig=None,output="json"): """根据用户输入的IP地址,能够快速的帮用户定位IP的所在位置""" url = 'https://restapi.amap.com/v3/ip?parameters' params = { "key": key, "ip": ip, "sig": sig, "output": output } response = requests.get(url,params=params) data = response.json() return data ``` ![IP定位](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/IP%E5%AE%9A%E4%BD%8D.png "IP定位") ==静态地图== ```python # 静态地图 def staticmap(key,location,zoom=15,size="400*400",scale=1,markers=None,labels=None,paths=None,traffic=0,sig=None): """静态地图服务通过返回一张地图图片响应HTTP请求,使用户能够将高德地图以图片形式嵌入自己的网页中。用户可以指定请求的地图位置、图片大小、以及在地图上添加覆盖物,如标签、标注、折线、多边形。""" from PIL import Image from io import BytesIO staticmap_url = "https://restapi.amap.com/v3/staticmap?parameters" params = { "key": key, "location": location, "zoom": zoom, "size": size, "scale": scale, "markers": markers, "labels": labels, "paths": paths, "traffic": traffic, "sig": sig } r = requests.get(staticmap_url, params) data = Image.open(BytesIO(r.content)) return data ``` ![静态地图](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E9%9D%99%E6%80%81%E5%9C%B0%E5%9B%BE.png "静态地图") ==天气查询== ```python def weather(key,city,extension="all",output="json"): """根据用户输入的adcode,查询目标区域当前/未来的天气情况""" weather_url = "https://restapi.amap.com/v3/weather/weatherInfo?parameters" params = { "key": key, "city": city, "extensions":extension, "output": output } r = requests.get(weather_url, params) return r.json() ``` ![天气系统](https://gitee.com/deng_ying_xin/api-final-project/raw/master/images/%E5%A4%A9%E6%B0%94%E6%9F%A5%E8%AF%A2.png "天气系统") - **API使用分析** - **本次我使用的是高德地图API** ==调用量次数而言:== | 平台 | 高德地图 | 百度地图 | |------|------|------| | 日调用 | 一样 | 一样 | | QPS | 较多 | 较少 | 高德地图API的数值是比百度地图平台的更加划算。 ==对于开发者而言:== | 平台 | 高德API | 百度API | |-------|---------------------------------|------------------| | 平台适用性 | Android、IOS、Windows phone、WIN8、Web | Android、IOS、WEB8 | | API文档 | API文档清晰明了,适合新手开发者 | API文档复杂,但是API全面 | - 百度地图: 网页版地图平台更好(Android、IOS、WEB)。 支持全景API POI数据很丰富 缺点:api文档复杂 - 高德地图: 开发者人群的支持面更高 平台适用性更好(Android、IOS、windows phone、Win8、web)。 #### 4.6 **数据流程图之智能API加值数据细节展示** ==**数据流程图**== #### 4.7 **人工智能概率性** ==对于使用者的主要区别:== | 平台 | 高德API | 百度API | |------|---------|-----------| | 注重功能 | 导航功能 | 生活功能 | | 路线优选 | 省油,适合旅游 | 省时,适合工作出勤 | - 高德注重导航的功能: 1、有很多路连名字都没有,但是高德依旧可以标记出来 用于骑行、徒步等低速运动,需要更详细地显示细节,高德地图则好于百度 2、高德语音提示比较全面,导航只听语音的话 - 百度注重生活的功能 : 1、实景功能 三维效果逼真,方便用户能够精准的找出目的位置 2、商家服务 对查找商家等 - 路线的优选 高德会给出路程最短的(省油,适合旅游) 百度则有更多的考虑,包括避开拥堵路段(省时,适合工作出勤) --- ## 五、心得总结及感谢 - 心得总结: 通过这学期学习的《API、机器学习与人工智能》,我受益匪浅。学习到原来我们生活中存在着很多人工智能,并且人工智能正在有效的帮助我们,让我们的生活更加方便,也通过了这一门课让我自己学到了这些技术。 期末项目是完成一款产品,这对于我来讲是具有挑战性的,如何去完成如何真正做到这个产品是让客户满意呢?对产品进行需求性分析、做功能分析的时候是我觉得十分困难的一件事情,因为要把自己代入是使用者,让自己在现实的环境中使用它。寻找出不足的地方以及进行改正,要懂自己的产品、想法才能做出基础的框架,还要寻找相应的API,调用API。但是并不是只有一个API能满足我们想要的功能,而是要找到相应的API共同使用才能做到我们想要的效果。这个过程中,我对比了几个平台的API,取优调用。 - 感谢 在这里要感谢许智超老师,让我们学到了如何使用API。 各大API平台:[百度地图API](http://lbsyun.baidu.com/)、[高德地图API](https://lbs.amap.com/)、[腾讯云地图API](https://lbs.qq.com/) 咨询网站:[简书](https://www.jianshu.com/)、[人人都是产品经理](http://www.woshipm.com/)、[CSDN专业开发者社区](https://www.csdn.net/) 工具网站:[墨刀](https://modao.cc/)、[Process ON](https://www.processon.com/) > 独特非重复有效外连URL:13个外链 > 高水平原创图表:6张表格+9张图 > 带语音旁白投影片:https://www.bilibili.com/video/BV1dr4y1N71b