标签 地图 下的文章

Atom 编辑器项目进入只读归档模式

2015 年,GitHub 在开源了 Atom 编辑器一年之后,发布了 1.0;而同一年,受 Atom 灵感影响的微软的 VS Code 编辑器发布,它同样采用了 Atom 的 Electron 框架。Atom 曾经吸引了数百万开发者使用。在微软 2018 年收购 GitHub 后,虽然 GitHub 曾经承诺不会放弃 Atom,但过去几年 Atom 除了安全更新外几乎没有什么改进。半年前,GitHub 宣布终止 Atom 项目,而现在它的仓库也被归档了。

消息来源:GitHub
老王点评:Atom 可能唯一剩下的重要遗产就是 Electron 框架了。

OpenAI 预计到 2024 年收入将达到 10 亿美元

最近大火的 ChatGPT 是 OpenAI 旗下产品,其已经为超过 100 万用户回答了查询。它是由 Elon Musk 和投资者 Sam Altman 共同创办的,得到了微软 10 亿美元的资金支持。OpenAI 最近的估值已达 200 亿美元,预计明年它的收入将达到 2 亿美元,到 2024 年将达到 10 亿美元。OpenAI 在 2019 年创建的“利润上限”结构是一种不寻常的限制。OpenAI 希望通过将支持者的回报限制在其投资的 100 倍,或在未来更少,来保障其使命。

消息来源:路透社
老王点评:预期在 AI 行业还有更多的造富机会。

Meta、微软、AWS 等合作构建开放地图数据

为了对抗谷歌在地图领域的主导地位,Meta、微软、AWS 和荷兰地图公司 TomTom 推动建立了 Overture 地图基金会,由 Linux 基金会正式主持。其使命是通过公开的数据集为新的地图产品提供动力,这些数据集可以在不同的应用和业务中使用和重用,每个成员都会把自己的数据和资源放进这个组合。

消息来源:Tech Crunch
老王点评:这种基础性的数据,显然不应该掌握在一两家公司手里。

作为谷歌地图的潜在替代品,OpenStreetMap 是一个由社区驱动的地图项目,在本文中我们将了解更多关于这个开源项目的信息。

OpenStreetMap(OSM)是一个可自由编辑的世界地图,任何人都可以对 OpenStreetMap 贡献、编辑和修改,以对其进行改进。

查看地图并不需要帐号,但如果你想要编辑或增加地图信息,就得先注册一个帐号了。

尽管 OpenStreetMap 以 开放数据库许可证 授权,可以自由使用,但也有所限制 —— 你不能使用地图 API 在 OpenStreetMap 之上建立另一个服务来达到商业目的。

因此,你可以下载地图数据来使用,以及在标示版权信息的前提下自己托管这些数据。可以在 OpenStreetMap 的官方网站上了解更多关于其 API 使用政策版权 的信息。

在这篇文章中,我们将简单看看 OpenStreetMap 是如何工作的,以及什么样的项目使用 OpenStreetMaps 作为其地图数据的来源。

OpenStreetMap:概述

OpenStreetMap 是很好的谷歌地图替代品,虽然你无法得到和谷歌地图一样的信息水平,但对于基本的导航和旅行来说,OpenStreetMap 已经足够了。

就像其他地图一样,你能够在地图的多个图层间切换,了解自己的位置,并轻松地查找地点。

你可能找不到关于附近企业、商店和餐馆的所有最新信息。但对于基本的导航来说,OpenStreetMap 已经足够了。

通常可以通过网页浏览器在桌面和手机上访问 OpenStreetMap 的网站 来使用 OpenStreetMap,它还没有一个官方的安卓/iOS 应用程序。

然而,也有各种各样的应用程序在其核心中使用了 OpenStreetMap。因此,如果你想在智能手机上使用 OpenStreetMap,你可以看看一些流行的谷歌地图开源替代:

MAPS.MEOsmAnd 是两个适用于安卓和 iOS 的开源应用程序,它们利用 OpenStreetMap 的数据提供丰富的用户体验,并在应用中添加了一堆有用的信息和功能。

如果你愿意,也可以选择其他专有选项,比如 Magic Earth

无论是哪种情况,你都可以在 OpenStreetMap 的官方维基页面上看一下适用于 安卓iOS 的大量应用程序列表。

在 Linux 上使用 OpenStreetMap

在 Linux 上使用 OpenStreetMap 最简单的方法就是在网页浏览器中使用它。如果你使用 GNOME 桌面环境,可以安装 GNOME 地图,它是建立在 OpenStreetMap 之上的。

还有几个软件(大多已经过时了)在 Linux 上使用 OpenStreetMap 来达到特定目的,你可以在 OpenStreetMap 的 官方维基列表 中查看可用软件包的列表。

总结

对于最终用户来说,OpenStreetMap 可能不是最好的导航源,但是它的开源模式允许它被自由使用,这意味着可以用 OpenStreetMap 来构建许多服务。例如,ÖPNVKarte 使用 OpenStreetMap 在一张统一的地图上显示全世界的公共交通设施,这样你就不必再浏览各个运营商的网站了。

你对 OpenStreetMap 有什么看法?你能用它作为谷歌地图的替代品吗?欢迎在下面的评论中分享你的想法。


via: https://itsfoss.com/openstreetmap/

作者:Ankush Das 选题:lujun9972 译者:rakino 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用这些开源框架创建一个彩色地图,显示病毒的可能的传播路径。

对于一个全球旅行司空见惯的世界来说,疾病的传播是一个真正令人担忧的问题。一些组织会跟踪重大的流行病(还有所有普遍的流行病),并将他们的跟踪工作获得的数据公开出来。不过,这些原始的数据对人来说可能很难处理,这就是为什么数据科学如此重要的原因。比如,用 Python 和 Pandas 可视化 COVID-19 在全球范围内的传播路径可能对这些数据的分析有所帮助。

最开始,当面对如此大数量的原始数据时可能难以下手。但当你开始处理数据之后,慢慢地就会发现一些处理数据的方式。下面是用于处理 COVID-19 数据的一些常见的情况:

  1. 从 GitHub 上下载 COVID-19 的国家每日传播数据,保存为一个 Pandas 中的 DataFrame 对象。这时你需要使用 Python 中的 Pandas 库。
  2. 处理并清理下载好的数据,使其满足可视化数据的输入格式。所下载的数据的情况很好(数据规整)。这个数据有一个问题是它用国家的名字来标识国家,但最好是使用三位数的 ISO 3 码(国家代码表)来标识国家。为了生成 ISO 3 码,可是使用 pycountry 这个 Python 库。生成了这些代码之后,可以在原有的 DataFrame 上增加一列,然后用这些代码填充进去。
  3. 最后为了实现可视化,使用 Plotly 库中的 express 模块。这篇文章是使用名为choropleth 的地图(可在 Plotly 库中获得)来可视化该疾病在全球的传播。

第一步:Corona 数据

从下面这个网站上下载最新的 corona 数据(LCTT 译注:2020-12-14 仍可访问,有墙):

我们之间将这个下载好的数据载入为 Pandas 的 DataFrame。Pandas 提供了一个函数, read_csv(),可以直接使用 URL 读取数据,并返回一个 DataFrame 对象,具体如下所示:

import pycountry
import plotly.express as px
import pandas as pd
URL_DATASET = r'https://raw.githubusercontent.com/datasets/covid-19/master/data/countries-aggregated.csv'
df1 = pd.read_csv(URL_DATASET)
print(df1.head(3))  # Get first 3 entries in the dataframe
print(df1.tail(3))  # Get last 3 entries in the dataframe

在 Jupyter 上的输出截图:

 title=

从这个输出可以看到这个 DataFrame(df1)包括以下几列数据:

  1. Date
  2. Country
  3. Confirmed
  4. Recovered
  5. Dead

之后还可以看到 Date 这一列包含了从 1 月 22 日到 3 月 31 日的条目信息。这个数据是每天更新的,所以你会得到你当天的值。

第二步:清理和修改 DataFrame

我们要往这个 DataFrame 中增加一列数据,就是那个包含了 ISO 3 编码。可以通过以下三步完成这个任务:

  1. 创建一个包含所有国家的列表。因为在 df1Country 列中,国家都是每个日期就重复一次。所以实际上 Country 列中对每个国家就会有多个条目。我使用 unique().tolist() 函数完成这个任务。
  2. 我使用 d_country_code 字典对象(初始为空),然后将其键设置为国家的名称,然后它的值设置为其对应的 ISO 3 编码。
  3. 我使用 pycountry.countries.search_fuzzy(country) 为每个国家生成 ISO 3 编码。你需要明白的是这个函数的返回值是一个 Country 对象的列表。我将这个函数的返回值赋给 country_data 对象。以这个对象的第一个元素(序号 0)为例。这个 \ 对象有一个 alpha_3 属性。所以我使用 country_data[0].alpha_3 就能“获得”第一个元素的 ISO 3 编码。然而,在这个 DataFrame 中有些国家的名称可能没有对应的 ISO 3 编码(比如有争议的领土)。那么对这些“国家/地区”,我就用一个空白字符串来替代 ISO 3 编码。你也可以用一个 try-except 代码来替换这部分。except 中的语句可以写:print(‘could not add ISO 3 code for ->', country)。这样就能在找不到这些“国家/地区”对应的 ISO 3 编码时给出一个输出提示。实际上,你会发现这些“国家/地区”会在最后的输出中用白色来表示。
  4. 在获得了每个国家的 ISO 3 编码(有些是空白字符串)之后,我把这些国家的名称(作为键)还有国家对应的 ISO 3 编码(作为值)添加到之前的字典 d_country_code 中。可以使用 Python 中字典对象的 update() 方法来完成这个任务。
  5. 在创建好了一个包含国家名称和对应 ISO 3 编码的字典之后,我使用一个简单的循环将他们加入到 DataFrame 中。

第三步:使用 Plotly 可视化传播路径

choropleth 地图是一个由彩色多边形组成的地图。它常常用来表示一个变量在空间中的变化。我们使用 Plotly 中的 px 模块来创建 choropleth 图,具体函数为:px.choropleth

这个函数的所包含的参数如下:

plotly.express.choropleth(data_frame=None, lat=None, lon=None, locations=None, locationmode=None, geojson=None, featureidkey=None, color=None, hover_name=None, hover_data=None, custom_data=None, animation_frame=None, animation_group=None, category_orders={}, labels={}, color_discrete_sequence=None, color_discrete_map={}, color_continuous_scale=None, range_color=None, color_continuous_midpoint=None, projection=None, scope=None, center=None, title=None, template=None, width=None, height=None)

choropleth() 这个函数还有几点需要注意:

  1. geojson 是一个 geometry 对象(上面函数第六个参数)。这个对象有点让人困扰,因为在函数文档中没有明确地提到这个对象。你可以提供,也可以不提供 geojson 对象。如果你提供了 geojson 对象,那么这个对象就会被用来绘制地球特征,如果不提供 geojson 对象,那这个函数默认就会使用一个内建的 geometry 对象。(在我们的实验中,我们使用内建的 geometry 对象,因此我们不会为 geojson 参数提供值)
  2. DataFrame 对象有一个 data_frame 属性,在这里我们先前就提供了一个我们创建好的df1
  3. 我们用 Confirmed(确诊数)来决定每个国家多边形的颜色。
  4. 最后,我们 Date 列创建一个 animation_frame。这样我们就能通过日期来划分数据,国家的颜色会随着 Confirmed 的变化而变化。

最后完整的代码如下:

import pycountry
import plotly.express as px
import pandas as pd
# ----------- Step 1 ------------
URL_DATASET = r'https://raw.githubusercontent.com/datasets/covid-19/master/data/countries-aggregated.csv'
df1 = pd.read_csv(URL_DATASET)
# print(df1.head) # Uncomment to see what the dataframe is like
# ----------- Step 2 ------------
list_countries = df1['Country'].unique().tolist()
# print(list_countries) # Uncomment to see list of countries
d_country_code = {}  # To hold the country names and their ISO
for country in list_countries:
    try:
        country_data = pycountry.countries.search_fuzzy(country)
        # country_data is a list of objects of class pycountry.db.Country
        # The first item  ie at index 0 of list is best fit
        # object of class Country have an alpha_3 attribute
        country_code = country_data[0].alpha_3
        d_country_code.update({country: country_code})
    except:
        print('could not add ISO 3 code for ->', country)
        # If could not find country, make ISO code ' '
        d_country_code.update({country: ' '})

# print(d_country_code) # Uncomment to check dictionary  

# create a new column iso_alpha in the df
# and fill it with appropriate iso 3 code
for k, v in d_country_code.items():
    df1.loc[(df1.Country == k), 'iso_alpha'] = v

# print(df1.head)  # Uncomment to confirm that ISO codes added
# ----------- Step 3 ------------
fig = px.choropleth(data_frame = df1,
                    locations= "iso_alpha",
                    color= "Confirmed",  # value in column 'Confirmed' determines color
                    hover_name= "Country",
                    color_continuous_scale= 'RdYlGn',  #  color scale red, yellow green
                    animation_frame= "Date")

fig.show()

你可以从这里下载并运行完整代码

最后,这里还有一些关于 Plotly 绘制 choropleth 图的不错的资源。


via: https://opensource.com/article/20/4/python-map-covid-19

作者:AnuragGupta 选题:lujun9972 译者:zhangxiangping 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我偶然发现了一个有趣的工具。在终端里的世界地图!是的,这太酷了。给 MapSCII 打 call,这是可在 xterm 兼容终端上渲染的布莱叶盲文和 ASCII 世界地图。它支持 GNU/Linux、Mac OS 和 Windows。我原以为它只不过是一个在 GitHub 上托管的项目而已,但是我错了!他们做的事令人印象深刻。我们可以使用我们的鼠标指针在世界地图的任何地方拖拽放大和缩小。其他显著的特性是:

  • 发现任何特定地点周围的兴趣点
  • 高度可定制的图层样式,支持 Mapbox 样式
  • 可连接到任何公共或私有的矢量贴片服务器
  • 或者使用已经提供并已优化的基于 OSM2VectorTiles 服务器
  • 可以离线工作并发现本地的 VectorTile/MBTiles
  • 兼容大多数 Linux 和 OSX 终端
  • 高度优化算法的流畅体验

使用 MapSCII 在终端中显示世界地图

要打开地图,只需从终端运行以下命令:

telnet mapscii.me

这是我终端上的世界地图。

很酷,是吗?

要切换到布莱叶盲文视图,请按 c

再次输入 c 切回以前的格式。

要滚动地图,请使用“向上”、“向下”、“向左”、“向右”箭头键。要放大/缩小位置,请使用 az 键。另外,你可以使用鼠标的滚轮进行放大或缩小。要退出地图,请按 q

就像我已经说过的,不要认为这是一个简单的项目。点击地图上的任何位置,然后按 a 放大。

放大后,下面是一些示例截图。

我可以放大查看我的国家(印度)的州。

和州内的地区(Tamilnadu):

甚至是地区内的镇 Taluks

还有,我完成学业的地方:

即使它只是一个最小的城镇,MapSCII 也能准确地显示出来。 MapSCII 使用 OpenStreetMap 来收集数据。

在本地安装 MapSCII

喜欢它吗?很好!你可以安装在你自己的系统上。

确保你的系统上已经安装了 Node.js。如果还没有,请参阅以下链接。

然后,运行以下命令来安装它。

sudo npm install -g mapscii

要启动 MapSCII,请运行:

mapscii

玩的开心!会有更好的东西。敬请关注!

干杯!


via: https://www.ostechnix.com/mapscii-world-map-terminal/

作者:SK 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出