在 C# 中获取一个国家的大陆

Posted

技术标签:

【中文标题】在 C# 中获取一个国家的大陆【英文标题】:Get a country's continent in C# 【发布时间】:2011-07-23 22:44:41 【问题描述】:

有没有办法在 C# 中找到一个国家的大陆,使用 RegionInfo 类或任何其他方式?

例如,您将国家名称命名为“丹麦”,它会返回“欧洲”。

【问题讨论】:

【参考方案1】:

.NET 框架中没有这样的东西。欧亚大陆和大洋洲的地理定义也相当模糊。有6 distinct definitions 正在使用中。您需要自己的数据库。

【讨论】:

【参考方案2】:

您可以存储hash table。条目将以国家名称作为键,以大陆名称作为值。 只需从某个公共数据库生成此表,一旦拥有它,您就可以简单地查询它。它也非常快。

http://www.geonames.org/countries/ 你可以从那里得到一个数据库

【讨论】:

我同意哈希表的一部分,但我从哪个公共数据库填充它?你知道我可以使用什么网络服务吗? 我猜,不手动做也没什么大不了的。使用这样的东西,也许:geonames.org/countries 2002 调用并希望返回其无类型集合。【参考方案3】:

只有几个大洲,只有几百个国家,所以仅仅建立自己的表并不难。关于大陆是什么(澳大利亚/大洋洲/大洋洲/亚洲有时特别棘手),以及是否例如大陆存在分歧。土耳其和俄罗斯位于欧洲、亚洲或两者兼而有之。不过,至少自己动手让您在这些问题上做出自己的决定。

【讨论】:

+1 更复杂的是,对于什么是国家 国家有不同的看法。伙计,地缘政治很难! @Cody,我们通常可以直接查看 ISO 名称代码列表,而将这些名称所指的内容留给其他人争论。我仍然有几次不得不构建协调其他系统不同方案的系统并且没有完美的解决方案,但是这些分歧经常导致战争和游击冲突,所以没有一个程序员可以期望解决所有问题. 我当然不是说任何程序员都可以解决所有问题!不过,使用 ISO 列表的建议很好。 值得指出他们不能的客户:)【参考方案4】:

你可以使用 http://products.wolframalpha.com/api/

http://www.wolframalpha.com/input/?i=continent+THECOUNTRYhttp://www.wolframalpha.com/input/?i=continent+sweden

【讨论】:

这与 C# 或 .NET 有什么关系? 我不知道 WA 是否会对使用他们的网站作为 Web 服务的应用程序来解决一个可以在几个小时的工作后解决的问题感到高​​兴。【参考方案5】:

RegionInfo 不存储大陆。但是您可以使用GeoNames.org Country Information 构建数据库。数据格式是 utf8 编码的制表符分隔文本。它包含您需要的所有信息和更多信息。

【讨论】:

【参考方案6】:

我知道这是一个老问题,但我已经为 C# 创建了一个库,其中包含大陆信息。你可以在这里Nager.Country找到我的项目,希望对你有帮助。

一个nuget包也可用install-package Nager.Country

示例

ICountryProvider countryProvider = new CountryProvider();
var countryInfo = countryProvider.GetCountry(Alpha2Code.DK);

【讨论】:

【参考方案7】:

唯一的解决方案是根据您需要的大陆模型构建您自己的查找列表。 例如,在美国和英国,我们将美国视为两个独立的大陆(北美和南美),而大多数其他国家/地区的人们都被告知美国是一个大陆。

您还应该考虑到一些国家分布在两大洲。俄罗斯的一部分在欧洲,其余的在亚洲。土耳其也一样。

【讨论】:

以上是关于在 C# 中获取一个国家的大陆的主要内容,如果未能解决你的问题,请参考以下文章

python 获取时区:大陆/国家

如何在 C# 中获取用户的国家/地区名称?

获取一个国家的默认时区(通过 CultureInfo)

Unity C#如何获取玩家的国家、城市或位置

抓取分层数据

如何获取用户所在的大陆?