Compare commits
13 Commits
0.0.3
...
5daee1a01a
Author | SHA1 | Date | |
---|---|---|---|
5daee1a01a | |||
2d5d305528 | |||
8da46c0511 | |||
75b5d7708c | |||
5b2177a795 | |||
8cb33dca5f | |||
ae2e0af18a | |||
2ac5a3d4f0 | |||
5f78a1afde | |||
ef5cf78a03 | |||
b60e62af70 | |||
3e59fe1462 | |||
4b4bf5ed65 |
@@ -1,3 +1,3 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
[assembly: AssemblyVersion("0.0.3")]
|
[assembly: AssemblyVersion("0.0.5")]
|
||||||
|
@@ -1,5 +1,9 @@
|
|||||||
|
using Cryville.EEW.Core;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Cryville.EEW.Unity {
|
namespace Cryville.EEW.Unity {
|
||||||
@@ -8,11 +12,18 @@ namespace Cryville.EEW.Unity {
|
|||||||
float SeverityColorMappingLuminanceMultiplier,
|
float SeverityColorMappingLuminanceMultiplier,
|
||||||
bool UseContinuousColor,
|
bool UseContinuousColor,
|
||||||
string ColorScheme,
|
string ColorScheme,
|
||||||
|
string LocationNamer,
|
||||||
|
|
||||||
string OverrideTimeZone,
|
string OverrideTimeZone,
|
||||||
bool DoDisplayTimeZone,
|
bool DoDisplayTimeZone,
|
||||||
bool DoSwitchBackToHistory,
|
bool DoSwitchBackToHistory,
|
||||||
|
|
||||||
|
string NowcastWarningDelayTolerance,
|
||||||
|
|
||||||
|
string OverrideDisplayCulture,
|
||||||
|
IReadOnlyCollection<TTSCultureConfig> TTSCultures,
|
||||||
|
bool DoIgnoreLanguageVariant,
|
||||||
|
|
||||||
IReadOnlyCollection<EventSourceConfig> EventSources
|
IReadOnlyCollection<EventSourceConfig> EventSources
|
||||||
) {
|
) {
|
||||||
public static Config Default => new(
|
public static Config Default => new(
|
||||||
@@ -20,11 +31,18 @@ namespace Cryville.EEW.Unity {
|
|||||||
1f,
|
1f,
|
||||||
false,
|
false,
|
||||||
"Default",
|
"Default",
|
||||||
|
"FERegionLong",
|
||||||
|
|
||||||
null,
|
null,
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
|
|
||||||
|
"1:00:00",
|
||||||
|
|
||||||
|
"",
|
||||||
|
new List<TTSCultureConfig> { new(SharedCultures.CurrentUICulture) },
|
||||||
|
true,
|
||||||
|
|
||||||
new List<EventSourceConfig> {
|
new List<EventSourceConfig> {
|
||||||
new JMAAtomEventSourceConfig(Array.Empty<string>()),
|
new JMAAtomEventSourceConfig(Array.Empty<string>()),
|
||||||
new UpdateCheckerEventSourceConfig(),
|
new UpdateCheckerEventSourceConfig(),
|
||||||
@@ -54,9 +72,23 @@ namespace Cryville.EEW.Unity {
|
|||||||
record NOAAEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
record NOAAEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
||||||
record UpdateCheckerEventSourceConfig : EventSourceConfig;
|
record UpdateCheckerEventSourceConfig : EventSourceConfig;
|
||||||
record USGSQuakeMLEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
record USGSQuakeMLEventSourceConfig([property: JsonRequired] string Subtype) : EventSourceConfig;
|
||||||
record WolfxEventSourceConfig(IReadOnlyCollection<string> Filter = null, bool IsFilterWhitelist = false) : EventSourceConfig;
|
record WolfxEventSourceConfig(IReadOnlyCollection<string> Filter = null, bool IsFilterWhitelist = false, bool UseRawCENCLocationName = false) : EventSourceConfig;
|
||||||
|
|
||||||
[JsonSerializable(typeof(Config))]
|
[JsonSerializable(typeof(Config))]
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
[JsonSourceGenerationOptions(Converters = new Type[] { typeof(CultureInfoConverter) }, WriteIndented = true)]
|
||||||
sealed partial class ConfigSerializationContext : JsonSerializerContext { }
|
sealed partial class ConfigSerializationContext : JsonSerializerContext { }
|
||||||
|
|
||||||
|
sealed class CultureInfoConverter : JsonConverter<CultureInfo> {
|
||||||
|
public override CultureInfo Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) {
|
||||||
|
Debug.Assert(typeToConvert == typeof(CultureInfo));
|
||||||
|
var value = reader.GetString();
|
||||||
|
if (value == null) return CultureInfo.InvariantCulture;
|
||||||
|
if (value == "") return SharedCultures.CurrentUICulture;
|
||||||
|
return SharedCultures.Get(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Write(Utf8JsonWriter writer, CultureInfo value, JsonSerializerOptions options) {
|
||||||
|
writer.WriteStringValue(value.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,19 +17,24 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
GameObject m_prefabTile;
|
GameObject m_prefabTile;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
GameObject m_prefabBitmapHolder;
|
GameObject m_prefabBitmapHolder;
|
||||||
|
[SerializeField]
|
||||||
|
int m_maxMapTileZoom = 10;
|
||||||
|
[SerializeField]
|
||||||
|
bool m_isEditor;
|
||||||
|
|
||||||
readonly MapTileCacheManager _tiles = new();
|
MapTileCacheManager _tiles;
|
||||||
float _elementLayerZ;
|
float _elementLayerZ;
|
||||||
|
|
||||||
void Start() {
|
void Start() {
|
||||||
_camera = GetComponent<Camera>();
|
_camera = GetComponent<Camera>();
|
||||||
|
_tiles = m_isEditor ? new EditorMapTileCacheManager() : new MapTileCacheManager();
|
||||||
_tiles.ExtraCachedZoomLevel = 20;
|
_tiles.ExtraCachedZoomLevel = 20;
|
||||||
_tiles.Parent = m_layerTile;
|
_tiles.Parent = m_layerTile;
|
||||||
_tiles.PrefabTile = m_prefabTile;
|
_tiles.PrefabTile = m_prefabTile;
|
||||||
_tiles.PrefabBitmapHolder = m_prefabBitmapHolder;
|
_tiles.PrefabBitmapHolder = m_prefabBitmapHolder;
|
||||||
_tiles.CacheDir = Application.temporaryCachePath;
|
_tiles.CacheDir = Application.temporaryCachePath;
|
||||||
_camera.orthographicSize = 0.5f / MathF.Max(1, (float)_camera.pixelWidth / _camera.pixelHeight);
|
_camera.orthographicSize = 0.5f / MathF.Max(1, (float)_camera.pixelWidth / _camera.pixelHeight);
|
||||||
_elementLayerZ = m_layerElement.transform.position.z;
|
if (m_layerElement != null) _elementLayerZ = m_layerElement.transform.position.z;
|
||||||
_mapElementUpdated = true;
|
_mapElementUpdated = true;
|
||||||
}
|
}
|
||||||
void OnDestroy() {
|
void OnDestroy() {
|
||||||
@@ -74,7 +79,7 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
void ZoomToMapElement() {
|
void ZoomToMapElement() {
|
||||||
var aabb = m_layerElement.AABB;
|
var aabb = m_layerElement != null ? m_layerElement.AABB : null;
|
||||||
if (aabb is not RectangleF b) return;
|
if (aabb is not RectangleF b) return;
|
||||||
if (b.Width * _camera.pixelHeight < _camera.pixelWidth * b.Height)
|
if (b.Width * _camera.pixelHeight < _camera.pixelWidth * b.Height)
|
||||||
Scale = b.Height;
|
Scale = b.Height;
|
||||||
@@ -97,26 +102,30 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
transform.localPosition = new(nx, Math.Clamp(transform.position.y, h / 2 - 1, -h / 2), -20);
|
transform.localPosition = new(nx, Math.Clamp(transform.position.y, h / 2 - 1, -h / 2), -20);
|
||||||
|
|
||||||
var bounds = new Bounds((Vector2)transform.position, new Vector2(w, h));
|
var bounds = new Bounds((Vector2)transform.position, new Vector2(w, h));
|
||||||
int zoom = Math.Clamp((int)Math.Log(vz / 256, 2) + 1, 0, 10);
|
int zoom = Math.Clamp((int)Math.Log(vz / 256, 2) + 1, 0, m_maxMapTileZoom);
|
||||||
int zoomScale = 1 << zoom;
|
int zoomScale = 1 << zoom;
|
||||||
_tiles.MoveTo(
|
_tiles.MoveTo(
|
||||||
new(Mathf.FloorToInt(bounds.min.x * zoomScale), Mathf.FloorToInt(-bounds.max.y * zoomScale), zoom),
|
new(Mathf.FloorToInt(bounds.min.x * zoomScale), Mathf.FloorToInt(-bounds.max.y * zoomScale), zoom),
|
||||||
new(Mathf.CeilToInt(bounds.max.x * zoomScale), Mathf.CeilToInt(-bounds.min.y * zoomScale), zoom)
|
new(Mathf.CeilToInt(bounds.max.x * zoomScale), Mathf.CeilToInt(-bounds.min.y * zoomScale), zoom)
|
||||||
);
|
);
|
||||||
|
|
||||||
m_layerElement.Scale = h;
|
if (m_layerElement != null) {
|
||||||
m_layerElementSub.Scale = h;
|
m_layerElement.Scale = h;
|
||||||
|
}
|
||||||
|
if (m_layerElementSub != null) {
|
||||||
|
m_layerElementSub.Scale = h;
|
||||||
|
|
||||||
if (nx - w / 2 < 0) {
|
if (nx - w / 2 < 0) {
|
||||||
m_layerElementSub.gameObject.SetActive(true);
|
m_layerElementSub.gameObject.SetActive(true);
|
||||||
m_layerElementSub.transform.localPosition = new(-1, 0, _elementLayerZ);
|
m_layerElementSub.transform.localPosition = new(-1, 0, _elementLayerZ);
|
||||||
}
|
}
|
||||||
else if (nx + w / 2 > 1) {
|
else if (nx + w / 2 > 1) {
|
||||||
m_layerElementSub.gameObject.SetActive(true);
|
m_layerElementSub.gameObject.SetActive(true);
|
||||||
m_layerElementSub.transform.localPosition = new(1, 0, _elementLayerZ);
|
m_layerElementSub.transform.localPosition = new(1, 0, _elementLayerZ);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_layerElementSub.gameObject.SetActive(false);
|
m_layerElementSub.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
15
Assets/Cryville.EEW.Unity/Map/EditorMapTileCacheManager.cs
Normal file
15
Assets/Cryville.EEW.Unity/Map/EditorMapTileCacheManager.cs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
using Cryville.EEW.Core.Map;
|
||||||
|
using System.IO;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Cryville.EEW.Unity.Map {
|
||||||
|
sealed class EditorMapTileCacheManager : MapTileCacheManager {
|
||||||
|
protected override MapTileBitmapHolder CreateBitmapHolder(MapTileIndex index) => new(
|
||||||
|
index,
|
||||||
|
GameObject.Instantiate(PrefabBitmapHolder, Parent, false),
|
||||||
|
new($"https://tile.openstreetmap.org/{index.Z}/{index.NX}/{index.NY}.png")
|
||||||
|
);
|
||||||
|
|
||||||
|
protected override string GetCacheFilePath(MapTileIndex index) => Path.Combine(CacheDir, $"map_editor/{index.Z}/{index.NX}/{index.NY}");
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 478198b8ecc0082449fa3f68795174a9
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -7,10 +7,12 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace Cryville.EEW.Unity.Map {
|
namespace Cryville.EEW.Unity.Map {
|
||||||
sealed class MapTileBitmapHolder : Core.Map.MapTileBitmapHolder {
|
sealed class MapTileBitmapHolder : Core.Map.MapTileBitmapHolder {
|
||||||
MapTileBitmapHolderBehaviour _behaviour;
|
readonly MapTileBitmapHolderBehaviour _behaviour;
|
||||||
|
readonly Uri _uri;
|
||||||
|
|
||||||
public MapTileBitmapHolder(MapTileIndex index, GameObject gameObject) : base(index) {
|
public MapTileBitmapHolder(MapTileIndex index, GameObject gameObject, Uri uri) : base(index) {
|
||||||
_behaviour = gameObject.GetComponent<MapTileBitmapHolderBehaviour>();
|
_behaviour = gameObject.GetComponent<MapTileBitmapHolderBehaviour>();
|
||||||
|
_uri = uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Dispose(bool disposing) {
|
protected override void Dispose(bool disposing) {
|
||||||
@@ -20,8 +22,7 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Uri GetUri() =>
|
protected override Uri GetUri() => _uri;
|
||||||
new($"https://server.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer/tile/{Index.Z}/{Index.NY}/{Index.NX}");
|
|
||||||
|
|
||||||
protected override Task LoadBitmap(FileInfo file, CancellationToken cancellationToken) {
|
protected override Task LoadBitmap(FileInfo file, CancellationToken cancellationToken) {
|
||||||
_behaviour.Load(file);
|
_behaviour.Load(file);
|
||||||
|
@@ -45,13 +45,13 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
_isReady = false;
|
_isReady = false;
|
||||||
}
|
}
|
||||||
if (_req == null || !_req.isDone) return;
|
if (_req == null || !_req.isDone) return;
|
||||||
if (_texHandler.isDone) {
|
if (_texHandler.isDone && _texHandler.texture != null) {
|
||||||
_tex = _texHandler.texture;
|
_tex = _texHandler.texture;
|
||||||
_tex.wrapMode = TextureWrapMode.Clamp;
|
_tex.wrapMode = TextureWrapMode.Clamp;
|
||||||
_sprite = Sprite.Create(_tex, new Rect(0, 0, _tex.width, _tex.height), Vector2.zero, _tex.height, 0, SpriteMeshType.FullRect, Vector4.zero, false);
|
_sprite = Sprite.Create(_tex, new Rect(0, 0, _tex.width, _tex.height), Vector2.zero, _tex.height, 0, SpriteMeshType.FullRect, Vector4.zero, false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Debug.LogError(_req.error);
|
Debug.LogError(_texHandler.error);
|
||||||
_localFile.Delete();
|
_localFile.Delete();
|
||||||
}
|
}
|
||||||
_req.Dispose();
|
_req.Dispose();
|
||||||
|
@@ -4,7 +4,7 @@ using System.IO;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Cryville.EEW.Unity.Map {
|
namespace Cryville.EEW.Unity.Map {
|
||||||
sealed class MapTileCacheManager : MapTileCacheManager<MapTileBitmapHolder> {
|
class MapTileCacheManager : MapTileCacheManager<MapTileBitmapHolder> {
|
||||||
public GameObject PrefabTile { get; set; }
|
public GameObject PrefabTile { get; set; }
|
||||||
public GameObject PrefabBitmapHolder { get; set; }
|
public GameObject PrefabBitmapHolder { get; set; }
|
||||||
|
|
||||||
@@ -12,8 +12,12 @@ namespace Cryville.EEW.Unity.Map {
|
|||||||
|
|
||||||
public string CacheDir { get; set; }
|
public string CacheDir { get; set; }
|
||||||
|
|
||||||
protected override MapTileBitmapHolder CreateBitmapHolder(MapTileIndex index) => new(index, GameObject.Instantiate(PrefabBitmapHolder, Parent, false));
|
protected override MapTileBitmapHolder CreateBitmapHolder(MapTileIndex index) => new(
|
||||||
|
index,
|
||||||
|
GameObject.Instantiate(PrefabBitmapHolder, Parent, false),
|
||||||
|
new($"https://server.arcgisonline.com/ArcGIS/rest/services/Ocean/World_Ocean_Base/MapServer/tile/{index.Z}/{index.NY}/{index.NX}")
|
||||||
|
);
|
||||||
|
|
||||||
protected override string GetCacheFilePath(MapTileIndex index) => Path.Combine(CacheDir, $"map/{index.Z}/{index.NX}/{index.NY}");
|
protected override string GetCacheFilePath(MapTileIndex index) => Path.Combine(CacheDir, $"map/{index.Z}/{index.NX}/{index.NY}");
|
||||||
|
|
||||||
readonly Dictionary<MapTile<MapTileBitmapHolder>, MapTile> _map = new();
|
readonly Dictionary<MapTile<MapTileBitmapHolder>, MapTile> _map = new();
|
||||||
|
219
Assets/Cryville.EEW.Unity/Map/RegionEditor.cs
Normal file
219
Assets/Cryville.EEW.Unity/Map/RegionEditor.cs
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Cryville.EEW.Unity.Map {
|
||||||
|
sealed class RegionEditor : MonoBehaviour {
|
||||||
|
QuadTreeNode _root;
|
||||||
|
|
||||||
|
[SerializeField] CameraController m_cameraController;
|
||||||
|
[SerializeField] GameObject m_regionViewPrefab;
|
||||||
|
|
||||||
|
[SerializeField] TMP_Text m_textSelectedInfo;
|
||||||
|
[SerializeField] TMP_Text m_textHoveredInfo;
|
||||||
|
[SerializeField] TMP_InputField m_inputId;
|
||||||
|
|
||||||
|
readonly Dictionary<QuadTreeNode, RegionView> _map = new();
|
||||||
|
|
||||||
|
void Start() {
|
||||||
|
var file = new FileInfo(Path.Combine(Application.persistentDataPath, "regions.json"));
|
||||||
|
if (file.Exists) {
|
||||||
|
using var stream = file.OpenRead();
|
||||||
|
_root = JsonSerializer.Deserialize<QuadTreeNode>(stream);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_root = NewNode();
|
||||||
|
}
|
||||||
|
BuildView(_root);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save() {
|
||||||
|
var file = new FileInfo(Path.Combine(Application.persistentDataPath, "regions.json"));
|
||||||
|
using var stream = file.Open(FileMode.Create);
|
||||||
|
JsonSerializer.Serialize(stream, _root);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BuildView(QuadTreeNode node) {
|
||||||
|
var view = Instantiate(m_regionViewPrefab, transform, false).GetComponent<RegionView>();
|
||||||
|
view.Init(node.X, node.Y, node.Z);
|
||||||
|
view.Id = node.Data.Id;
|
||||||
|
view.IsLeaf = node.Children == null;
|
||||||
|
_map.Add(node, view);
|
||||||
|
BuildChildViews(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BuildChildViews(QuadTreeNode node) {
|
||||||
|
if (node.Children == null) return;
|
||||||
|
foreach (var child in node.Children) {
|
||||||
|
BuildView(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DestroyChildViews(QuadTreeNode node) {
|
||||||
|
if (node.Children == null) return;
|
||||||
|
foreach (var child in node.Children) {
|
||||||
|
Destroy(_map[child].gameObject);
|
||||||
|
_map.Remove(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QuadTreeNode _hoveredNode;
|
||||||
|
QuadTreeNode _selectedNode;
|
||||||
|
Vector3? _ppos;
|
||||||
|
void Update() {
|
||||||
|
var pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
|
||||||
|
pos.y += 1;
|
||||||
|
var hoveredNode = _root.Get(pos);
|
||||||
|
if (hoveredNode != _hoveredNode) {
|
||||||
|
HoverNode(hoveredNode);
|
||||||
|
}
|
||||||
|
if (Input.GetMouseButtonDown(0)) {
|
||||||
|
_ppos = Input.mousePosition;
|
||||||
|
}
|
||||||
|
if (Input.GetMouseButton(0) && _ppos is Vector3 pos0) {
|
||||||
|
if (Input.mousePosition != pos0) {
|
||||||
|
_ppos = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hoveredNode == null) return;
|
||||||
|
if (Input.GetMouseButtonUp(0) && _ppos != null) {
|
||||||
|
SelectNode(hoveredNode);
|
||||||
|
_ppos = null;
|
||||||
|
}
|
||||||
|
if (m_inputId.isFocused)
|
||||||
|
return;
|
||||||
|
if (Input.GetKeyUp(KeyCode.A)) {
|
||||||
|
MergeNode(hoveredNode);
|
||||||
|
}
|
||||||
|
if (Input.GetKeyUp(KeyCode.S)) {
|
||||||
|
SplitNode(hoveredNode);
|
||||||
|
}
|
||||||
|
if (Input.GetKeyUp(KeyCode.C)) {
|
||||||
|
m_inputId.text = hoveredNode.Data.Id;
|
||||||
|
}
|
||||||
|
if (Input.GetKeyUp(KeyCode.V)) {
|
||||||
|
hoveredNode.Data.Id = m_inputId.text;
|
||||||
|
_map[hoveredNode].Id = hoveredNode.Data.Id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void HoverNode(QuadTreeNode node) {
|
||||||
|
if (_hoveredNode != null) {
|
||||||
|
_map[_hoveredNode].IsHovered = false;
|
||||||
|
}
|
||||||
|
_hoveredNode = node;
|
||||||
|
if (_hoveredNode != null) {
|
||||||
|
_map[_hoveredNode].IsHovered = true;
|
||||||
|
m_textHoveredInfo.text = string.Format(CultureInfo.InvariantCulture, "<Hovered>\nZ: {2}, XY: ({0}, {1})\nD: {3}", node.X, node.Y, node.Z, node.Data.Id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_textHoveredInfo.text = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void SelectNode(QuadTreeNode node) {
|
||||||
|
if (_selectedNode != null) {
|
||||||
|
_map[_selectedNode].IsSelected = false;
|
||||||
|
}
|
||||||
|
_selectedNode = node;
|
||||||
|
if (_selectedNode != null) {
|
||||||
|
_map[_selectedNode].IsSelected = true;
|
||||||
|
m_textSelectedInfo.text = string.Format(CultureInfo.InvariantCulture, "<Selected>\nZ: {2}, XY: ({0}, {1})\nD: {3}", node.X, node.Y, node.Z, node.Data.Id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_textSelectedInfo.text = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void MergeNode(QuadTreeNode node) {
|
||||||
|
var parent = node.Parent;
|
||||||
|
if (parent == null)
|
||||||
|
return;
|
||||||
|
DestroyChildViews(parent);
|
||||||
|
_map[parent].IsLeaf = true;
|
||||||
|
parent.Merge();
|
||||||
|
_hoveredNode = null;
|
||||||
|
if (_selectedNode != null && !_map.ContainsKey(_selectedNode)) {
|
||||||
|
_selectedNode = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void SplitNode(QuadTreeNode node) {
|
||||||
|
node.Split();
|
||||||
|
_map[node].IsLeaf = false;
|
||||||
|
BuildChildViews(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
static QuadTreeNode NewNode() => new() { Data = new("") };
|
||||||
|
|
||||||
|
sealed class QuadTreeNode {
|
||||||
|
QuadTreeNode[] m_children;
|
||||||
|
public QuadTreeNode[] Children {
|
||||||
|
get => m_children;
|
||||||
|
set {
|
||||||
|
if (m_children != null) {
|
||||||
|
foreach (var child in m_children) {
|
||||||
|
child.DetachFromParent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_children = value;
|
||||||
|
UpdateChildren();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QuadTreeNode m_parent;
|
||||||
|
[JsonIgnore] public QuadTreeNode Parent => m_parent;
|
||||||
|
void AttachToParent(QuadTreeNode parent, int index) {
|
||||||
|
if (m_parent != null && m_parent != parent)
|
||||||
|
throw new InvalidOperationException("Node already in a tree.");
|
||||||
|
m_parent = parent;
|
||||||
|
X = (parent.X << 1) | (index is 0 or 3 ? 1 : 0);
|
||||||
|
Y = (parent.Y << 1) | (index is 0 or 1 ? 1 : 0);
|
||||||
|
Z = parent.Z + 1;
|
||||||
|
UpdateChildren();
|
||||||
|
}
|
||||||
|
void DetachFromParent() => m_parent = null;
|
||||||
|
void UpdateChildren() {
|
||||||
|
if (m_children != null) {
|
||||||
|
for (int i = 0; i < m_children.Length; i++) {
|
||||||
|
m_children[i].AttachToParent(this, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[JsonIgnore] public int X { get; private set; }
|
||||||
|
[JsonIgnore] public int Y { get; private set; }
|
||||||
|
[JsonIgnore] public int Z { get; private set; }
|
||||||
|
public RegionData Data { get; set; }
|
||||||
|
|
||||||
|
public QuadTreeNode Get(Vector2 pos) {
|
||||||
|
if ((pos.x is < 0 or >= 1) || (pos.y is < 0 or >= 1))
|
||||||
|
return null;
|
||||||
|
if (m_children == null)
|
||||||
|
return this;
|
||||||
|
Vector2 subPos = pos * 2;
|
||||||
|
subPos.x %= 1;
|
||||||
|
subPos.y %= 1;
|
||||||
|
return pos.x >= 0.5f
|
||||||
|
? (pos.y >= 0.5f ? m_children[0] : m_children[3]).Get(subPos)
|
||||||
|
: (pos.y >= 0.5f ? m_children[1] : m_children[2]).Get(subPos);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Merge() {
|
||||||
|
Children = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Split() {
|
||||||
|
Children = new QuadTreeNode[] {
|
||||||
|
new() { Data = Data.Copy() },
|
||||||
|
new() { Data = Data.Copy() },
|
||||||
|
new() { Data = Data.Copy() },
|
||||||
|
new() { Data = Data.Copy() },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sealed record RegionData(string Id) {
|
||||||
|
public string Id { get; set; } = Id;
|
||||||
|
public RegionData Copy() => (RegionData)MemberwiseClone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Cryville.EEW.Unity/Map/RegionEditor.cs.meta
Normal file
11
Assets/Cryville.EEW.Unity/Map/RegionEditor.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fd7b70d11ebfe324e830806e394cc334
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
68
Assets/Cryville.EEW.Unity/Map/RegionView.cs
Normal file
68
Assets/Cryville.EEW.Unity/Map/RegionView.cs
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Cryville.EEW.Unity.Map {
|
||||||
|
sealed class RegionView : MonoBehaviour {
|
||||||
|
[SerializeField]
|
||||||
|
SpriteRenderer m_spriteRenderer;
|
||||||
|
|
||||||
|
Color _color;
|
||||||
|
|
||||||
|
bool m_isHovered;
|
||||||
|
public bool IsHovered {
|
||||||
|
get => m_isHovered;
|
||||||
|
set {
|
||||||
|
m_isHovered = value;
|
||||||
|
UpdateColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool m_isSelected;
|
||||||
|
public bool IsSelected {
|
||||||
|
get => m_isSelected;
|
||||||
|
set {
|
||||||
|
m_isSelected = value;
|
||||||
|
UpdateColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool m_isLeaf = true;
|
||||||
|
public bool IsLeaf {
|
||||||
|
get => m_isLeaf;
|
||||||
|
set {
|
||||||
|
m_isLeaf = value;
|
||||||
|
UpdateColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
string m_id;
|
||||||
|
public string Id {
|
||||||
|
get => m_id;
|
||||||
|
set {
|
||||||
|
m_id = value;
|
||||||
|
unchecked {
|
||||||
|
uint hash = (uint)value.GetHashCode();
|
||||||
|
_color = Color.HSVToRGB(((hash >> 24) ^ ((hash >> 16) & 0xff) ^ ((hash >> 8) & 0xff) ^ (hash & 0xff)) / (float)0xff, 1, 1);
|
||||||
|
}
|
||||||
|
UpdateColor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Init(int x, int y, int z) {
|
||||||
|
float scale = 1f / (1 << z);
|
||||||
|
transform.localScale = new Vector3(scale, scale, 1);
|
||||||
|
transform.localPosition = new Vector3(x * scale, y * scale - 1, -1 - z / 100f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateColor() {
|
||||||
|
if (!m_isLeaf)
|
||||||
|
_color.a = 0.0f;
|
||||||
|
else if (m_isSelected)
|
||||||
|
_color.a = 0.6f;
|
||||||
|
else if (m_isHovered)
|
||||||
|
_color.a = 0.4f;
|
||||||
|
else
|
||||||
|
_color.a = 0.2f;
|
||||||
|
m_spriteRenderer.color = _color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Cryville.EEW.Unity/Map/RegionView.cs.meta
Normal file
11
Assets/Cryville.EEW.Unity/Map/RegionView.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c57a0e86eb63b6048ba265e9d98e84f6
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -1,4 +1,5 @@
|
|||||||
using Cryville.EEW.Colors;
|
using Cryville.EEW.Colors;
|
||||||
|
using Cryville.EEW.Core;
|
||||||
using Cryville.EEW.Core.Colors;
|
using Cryville.EEW.Core.Colors;
|
||||||
using Cryville.EEW.FERegion;
|
using Cryville.EEW.FERegion;
|
||||||
using Cryville.EEW.Map;
|
using Cryville.EEW.Map;
|
||||||
@@ -25,8 +26,23 @@ namespace Cryville.EEW.Unity {
|
|||||||
public IColorScheme ColorScheme { get; private set; } = new SeverityBasedColorScheme(DefaultSeverityScheme.Instance, DefaultSeverityColorMapping.Instance);
|
public IColorScheme ColorScheme { get; private set; } = new SeverityBasedColorScheme(DefaultSeverityScheme.Instance, DefaultSeverityColorMapping.Instance);
|
||||||
public ISubColorScheme BorderColorScheme { get; private set; } = new WrappedColorScheme(new SeverityBasedColorScheme(DefaultSeverityScheme.Instance, DefaultSeverityColorMapping.SecondaryInstance));
|
public ISubColorScheme BorderColorScheme { get; private set; } = new WrappedColorScheme(new SeverityBasedColorScheme(DefaultSeverityScheme.Instance, DefaultSeverityColorMapping.SecondaryInstance));
|
||||||
public ISubColorScheme TextColorScheme { get; private set; } = new DefaultTextColorScheme(Color.White, Color.Black);
|
public ISubColorScheme TextColorScheme { get; private set; } = new DefaultTextColorScheme(Color.White, Color.Black);
|
||||||
public ILocationConverter LocationConverter => new FERegionLongConverter(); // TODO TTS
|
public TimeSpan NowcastWarningDelayTolerance { get; private set; } = TimeSpan.FromMinutes(60);
|
||||||
public TimeSpan NowcastWarningDelayTolerance => TimeSpan.FromMinutes(60); // TODO TTS
|
|
||||||
|
public CultureInfo RVMCulture { get; private set; } = SharedCultures.CurrentUICulture;
|
||||||
|
readonly int _infoLocationSpecificity = 3;
|
||||||
|
readonly int _ttsLocationSpecificity = 3;
|
||||||
|
readonly LocationNamer _locationNamer = new() { Namer = new FERegionLongNamer() };
|
||||||
|
public bool NameLocation(double lat, double lon, CultureInfo localCulture, ref CultureInfo targetCulture, out string name, out int specificity) {
|
||||||
|
specificity = _ttsLocationSpecificity;
|
||||||
|
return _locationNamer.Name(lat, lon, localCulture, ref targetCulture, out name, ref specificity);
|
||||||
|
}
|
||||||
|
public bool NameLocation(double lat, double lon, CultureInfo localCulture, ref CultureInfo targetCulture, out string name) {
|
||||||
|
int specificity = _infoLocationSpecificity;
|
||||||
|
return _locationNamer.Name(lat, lon, localCulture, ref targetCulture, out name, ref specificity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IReadOnlyCollection<TTSCultureConfig> TTSCultures { get; private set; }
|
||||||
|
public bool DoIgnoreLanguageVariant { get; private set; }
|
||||||
|
|
||||||
public TimeZoneInfo OverrideTimeZone { get; private set; }
|
public TimeZoneInfo OverrideTimeZone { get; private set; }
|
||||||
public bool DoDisplayTimeZone { get; private set; } = true;
|
public bool DoDisplayTimeZone { get; private set; } = true;
|
||||||
@@ -101,9 +117,20 @@ namespace Cryville.EEW.Unity {
|
|||||||
"SREV" => new DefaultTextColorScheme(Color.White, Color.FromArgb(28, 28, 28), 0.555f),
|
"SREV" => new DefaultTextColorScheme(Color.White, Color.FromArgb(28, 28, 28), 0.555f),
|
||||||
_ => new DefaultTextColorScheme(Color.White, Color.Black),
|
_ => new DefaultTextColorScheme(Color.White, Color.Black),
|
||||||
};
|
};
|
||||||
|
_locationNamer.Namer = config.LocationNamer switch {
|
||||||
|
"FERegionShort" => new FERegionShortNamer(),
|
||||||
|
_ => new FERegionLongNamer(),
|
||||||
|
};
|
||||||
|
if (config.NowcastWarningDelayTolerance is string nowcastWarningDelayTolerance)
|
||||||
|
NowcastWarningDelayTolerance = TimeSpan.Parse(nowcastWarningDelayTolerance, CultureInfo.InvariantCulture);
|
||||||
OverrideTimeZone = ParseTimeZone(config.OverrideTimeZone);
|
OverrideTimeZone = ParseTimeZone(config.OverrideTimeZone);
|
||||||
DoDisplayTimeZone = config.DoDisplayTimeZone;
|
DoDisplayTimeZone = config.DoDisplayTimeZone;
|
||||||
DoSwitchBackToHistory = config.DoSwitchBackToHistory;
|
DoSwitchBackToHistory = config.DoSwitchBackToHistory;
|
||||||
|
RVMCulture = config.OverrideDisplayCulture is string rvmCulture
|
||||||
|
? (string.IsNullOrEmpty(rvmCulture) ? SharedCultures.CurrentUICulture : SharedCultures.Get(rvmCulture))
|
||||||
|
: CultureInfo.InvariantCulture;
|
||||||
|
TTSCultures = config.TTSCultures ?? new List<TTSCultureConfig> { new(CultureInfo.InvariantCulture) };
|
||||||
|
DoIgnoreLanguageVariant = config.DoIgnoreLanguageVariant;
|
||||||
EventSources = config.EventSources;
|
EventSources = config.EventSources;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ using System.IO;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Cryville.EEW.Unity {
|
namespace Cryville.EEW.Unity {
|
||||||
class SoundPlayer : Core.SoundPlayer {
|
class SoundPlayer : Core.Audio.SoundPlayer {
|
||||||
public SoundPlayer() : base(GetEngineList(), AudioUsage.NotificationEvent) { }
|
public SoundPlayer() : base(GetEngineList(), AudioUsage.NotificationEvent) { }
|
||||||
static List<Type> GetEngineList() => new() {
|
static List<Type> GetEngineList() => new() {
|
||||||
typeof(Audio.Wasapi.MMDeviceEnumeratorWrapper),
|
typeof(Audio.Wasapi.MMDeviceEnumeratorWrapper),
|
||||||
|
@@ -1,11 +1,19 @@
|
|||||||
|
using SpeechLib;
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Cryville.EEW.Unity {
|
namespace Cryville.EEW.Unity {
|
||||||
class TTSWorker : Core.TTSWorker {
|
class TTSWorker : Core.Audio.TTSWorker {
|
||||||
public TTSWorker() : base(CreateSoundPlayer()) { }
|
readonly SpVoiceClass _voice;
|
||||||
|
|
||||||
|
public TTSWorker() : base(CreateSoundPlayer()) {
|
||||||
|
try {
|
||||||
|
_voice = new SpVoiceClass();
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
static SoundPlayer CreateSoundPlayer() {
|
static SoundPlayer CreateSoundPlayer() {
|
||||||
try {
|
try {
|
||||||
@@ -16,10 +24,24 @@ namespace Cryville.EEW.Unity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool IsSpeaking() => false;
|
protected override bool IsSpeaking() {
|
||||||
|
if (_voice == null) return false;
|
||||||
|
_voice.GetStatus(out var status, out _);
|
||||||
|
return (status.dwRunningState & (uint)SpeechRunState.SRSEIsSpeaking) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
protected override Task Speak(CultureInfo culture, string content, CancellationToken cancellationToken) => Task.CompletedTask;
|
protected override Task Speak(CultureInfo culture, string content, CancellationToken cancellationToken) {
|
||||||
|
if (_voice == null) return Task.CompletedTask;
|
||||||
|
_voice.Speak(
|
||||||
|
string.Format(CultureInfo.InvariantCulture, "<LANG LANGID=\"{0:x}\">{1}</LANG>", culture.LCID, content),
|
||||||
|
SpeechVoiceSpeakFlags.SVSFlagsAsync | SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak
|
||||||
|
);
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
protected override void StopCurrent() { }
|
protected override void StopCurrent() {
|
||||||
|
if (_voice == null) return;
|
||||||
|
_voice.Skip("SENTENCE", int.MaxValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,6 +23,7 @@ namespace Cryville.EEW.Unity.UI {
|
|||||||
child.SetViewModel(e);
|
child.SetViewModel(e);
|
||||||
child.transform.SetParent(m_listView, false);
|
child.transform.SetParent(m_listView, false);
|
||||||
_displayingViews.Add(child);
|
_displayingViews.Add(child);
|
||||||
|
OnDisplayingViewsChanged();
|
||||||
|
|
||||||
SwitchTo(_displayingReports.Count - 1);
|
SwitchTo(_displayingReports.Count - 1);
|
||||||
|
|
||||||
@@ -37,6 +38,7 @@ namespace Cryville.EEW.Unity.UI {
|
|||||||
child.SetParent(null, false);
|
child.SetParent(null, false);
|
||||||
Destroy(child.gameObject);
|
Destroy(child.gameObject);
|
||||||
_displayingViews.RemoveAt(index);
|
_displayingViews.RemoveAt(index);
|
||||||
|
OnDisplayingViewsChanged();
|
||||||
|
|
||||||
if (_displayingReports.Count == 0) {
|
if (_displayingReports.Count == 0) {
|
||||||
m_currentView.gameObject.SetActive(false);
|
m_currentView.gameObject.SetActive(false);
|
||||||
@@ -49,6 +51,14 @@ namespace Cryville.EEW.Unity.UI {
|
|||||||
|
|
||||||
if (_displayingReports.Count <= 1) m_listView.gameObject.SetActive(false);
|
if (_displayingReports.Count <= 1) m_listView.gameObject.SetActive(false);
|
||||||
}
|
}
|
||||||
|
void OnDisplayingViewsChanged() {
|
||||||
|
_maxBaseDuration = 1;
|
||||||
|
foreach (var e in _displayingReports) {
|
||||||
|
float duration = GetBaseDuration(e);
|
||||||
|
if (duration > _maxBaseDuration)
|
||||||
|
_maxBaseDuration = duration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Awake() {
|
void Awake() {
|
||||||
if (Instance != null) {
|
if (Instance != null) {
|
||||||
@@ -63,6 +73,7 @@ namespace Cryville.EEW.Unity.UI {
|
|||||||
|
|
||||||
int _index = -1;
|
int _index = -1;
|
||||||
float _tickDown;
|
float _tickDown;
|
||||||
|
float _maxBaseDuration;
|
||||||
void Update() {
|
void Update() {
|
||||||
if (_displayingReports.Count == 0) return;
|
if (_displayingReports.Count == 0) return;
|
||||||
_tickDown -= Time.deltaTime;
|
_tickDown -= Time.deltaTime;
|
||||||
@@ -77,12 +88,15 @@ namespace Cryville.EEW.Unity.UI {
|
|||||||
_index = index;
|
_index = index;
|
||||||
var e = _displayingReports[index];
|
var e = _displayingReports[index];
|
||||||
m_currentView.SetViewModel(e, true);
|
m_currentView.SetViewModel(e, true);
|
||||||
var keyProp = e.Properties.FirstOrDefault();
|
|
||||||
_displayingViews[_index].SetCurrent(true);
|
_displayingViews[_index].SetCurrent(true);
|
||||||
_tickDown = MathF.Exp(Math.Max(-1f, keyProp?.Severity ?? -1f) + 1);
|
_tickDown = GetBaseDuration(e) / Math.Min(_maxBaseDuration, 4) * 4;
|
||||||
m_currentView.gameObject.SetActive(true);
|
m_currentView.gameObject.SetActive(true);
|
||||||
Worker.Instance.SetCurrent(e);
|
Worker.Instance.SetCurrent(e);
|
||||||
}
|
}
|
||||||
|
static float GetBaseDuration(ReportViewModel e) {
|
||||||
|
return MathF.Exp(Math.Max(-1f, e.Properties.FirstOrDefault()?.Severity ?? -1f) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
public void OnItemClicked(ReportViewModel viewModel) {
|
public void OnItemClicked(ReportViewModel viewModel) {
|
||||||
int index = _displayingReports.IndexOf(viewModel);
|
int index = _displayingReports.IndexOf(viewModel);
|
||||||
if (index == -1) return;
|
if (index == -1) return;
|
||||||
|
@@ -12,8 +12,8 @@ namespace Cryville.EEW.Unity.UI {
|
|||||||
_textView = GetComponent<TMP_Text>();
|
_textView = GetComponent<TMP_Text>();
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder _sb = new();
|
readonly StringBuilder _sb = new();
|
||||||
char[] _buffer = new char[256];
|
readonly char[] _buffer = new char[256];
|
||||||
void Update() {
|
void Update() {
|
||||||
_sb.Clear();
|
_sb.Clear();
|
||||||
_sb.AppendFormat(
|
_sb.AppendFormat(
|
||||||
|
@@ -64,6 +64,9 @@ namespace Cryville.EEW.Unity {
|
|||||||
BuildWorkers();
|
BuildWorkers();
|
||||||
_worker.RVMGeneratorContext = SharedSettings.Instance;
|
_worker.RVMGeneratorContext = SharedSettings.Instance;
|
||||||
_worker.TTSMessageGeneratorContext = SharedSettings.Instance;
|
_worker.TTSMessageGeneratorContext = SharedSettings.Instance;
|
||||||
|
_worker.RVMCulture = SharedSettings.Instance.RVMCulture;
|
||||||
|
_worker.SetTTSCultures(SharedSettings.Instance.TTSCultures ?? new TTSCultureConfig[0]);
|
||||||
|
_worker.IgnoreLanguageVariant = SharedSettings.Instance.DoIgnoreLanguageVariant;
|
||||||
_ongoingReportManager.Changed += OnOngoingReported;
|
_ongoingReportManager.Changed += OnOngoingReported;
|
||||||
_worker.Reported += OnReported;
|
_worker.Reported += OnReported;
|
||||||
_grouper.GroupUpdated += OnGroupUpdated;
|
_grouper.GroupUpdated += OnGroupUpdated;
|
||||||
@@ -87,9 +90,10 @@ namespace Cryville.EEW.Unity {
|
|||||||
_ongoingReportManager.Dispose();
|
_ongoingReportManager.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RegisterViewModelGenerators(CoreWorker worker) {
|
CENCEarthquakeRVMGenerator _cencEarthquakeRVMGenerator;
|
||||||
|
void RegisterViewModelGenerators(CoreWorker worker) {
|
||||||
worker.RegisterViewModelGenerator(new BMKGEarthquakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new BMKGEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CENCEarthquakeRVMGenerator());
|
worker.RegisterViewModelGenerator(_cencEarthquakeRVMGenerator = new CENCEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CENCEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new CENCEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CWAEarthquakeRVMGenerator());
|
worker.RegisterViewModelGenerator(new CWAEarthquakeRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new CWAEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new CWAEEWRVMGenerator());
|
||||||
@@ -104,9 +108,10 @@ namespace Cryville.EEW.Unity {
|
|||||||
worker.RegisterViewModelGenerator(new SichuanEEWRVMGenerator());
|
worker.RegisterViewModelGenerator(new SichuanEEWRVMGenerator());
|
||||||
worker.RegisterViewModelGenerator(new VersionRVMGenerator());
|
worker.RegisterViewModelGenerator(new VersionRVMGenerator());
|
||||||
}
|
}
|
||||||
static void RegisterTTSMessageGenerators(CoreWorker worker) {
|
CENCEarthquakeTTSMessageGenerator _cencEarthquakeTTSMessageGenerator;
|
||||||
|
void RegisterTTSMessageGenerators(CoreWorker worker) {
|
||||||
worker.RegisterTTSMessageGenerator(new BMKGEarthquakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new BMKGEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CENCEarthquakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(_cencEarthquakeTTSMessageGenerator = new CENCEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CENCEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CENCEEWTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CWAEarthquakeTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CWAEarthquakeTTSMessageGenerator());
|
||||||
worker.RegisterTTSMessageGenerator(new CWAEEWTTSMessageGenerator());
|
worker.RegisterTTSMessageGenerator(new CWAEEWTTSMessageGenerator());
|
||||||
@@ -129,7 +134,7 @@ namespace Cryville.EEW.Unity {
|
|||||||
BMKGOpenDataWorker bmkgWorker = new(new Uri("http://localhost:9095/autogempa.json"));
|
BMKGOpenDataWorker bmkgWorker = new(new Uri("http://localhost:9095/autogempa.json"));
|
||||||
bmkgWorker.SetDataUris(new Uri[] { new("http://localhost:9095/gempadirasakan.json") });
|
bmkgWorker.SetDataUris(new Uri[] { new("http://localhost:9095/gempadirasakan.json") });
|
||||||
_worker.AddWorker(bmkgWorker);
|
_worker.AddWorker(bmkgWorker);
|
||||||
_worker.AddWorker(new NOAAAtomWorker(new("http://localhost:9095/PAAQAtom.xml")));
|
_worker.AddWorker(new NOAAAtomWorker(new("http://localhost:9095/PAAQAtom.xml"), forceHttps: false));
|
||||||
_worker.AddWorker(new UpdateCheckerWorker(typeof(Worker).Assembly.GetName().Version?.ToString(3) ?? "", "unity"));
|
_worker.AddWorker(new UpdateCheckerWorker(typeof(Worker).Assembly.GetName().Version?.ToString(3) ?? "", "unity"));
|
||||||
#else
|
#else
|
||||||
foreach (var source in SharedSettings.Instance.EventSources) {
|
foreach (var source in SharedSettings.Instance.EventSources) {
|
||||||
@@ -163,7 +168,7 @@ namespace Cryville.EEW.Unity {
|
|||||||
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
||||||
return worker;
|
return worker;
|
||||||
}
|
}
|
||||||
static WolfxWorker BuildWolfxWorkerFilter(WolfxWorker worker, WolfxEventSourceConfig config) {
|
WolfxWorker BuildWolfxWorkerFilter(WolfxWorker worker, WolfxEventSourceConfig config) {
|
||||||
if (config.Filter != null) worker.SetFilter(config.Filter.Select(i => i switch {
|
if (config.Filter != null) worker.SetFilter(config.Filter.Select(i => i switch {
|
||||||
"cenc_eew" => typeof(CENCEEW),
|
"cenc_eew" => typeof(CENCEEW),
|
||||||
"cenc_eqlist" => typeof(WolfxEarthquakeList<CENCEarthquake>),
|
"cenc_eqlist" => typeof(WolfxEarthquakeList<CENCEarthquake>),
|
||||||
@@ -174,6 +179,11 @@ namespace Cryville.EEW.Unity {
|
|||||||
_ => throw new InvalidOperationException("Unknown Wolfx event type."),
|
_ => throw new InvalidOperationException("Unknown Wolfx event type."),
|
||||||
}));
|
}));
|
||||||
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
worker.IsFilterWhitelist = config.IsFilterWhitelist;
|
||||||
|
|
||||||
|
_cencEarthquakeRVMGenerator.UseRawLocationName
|
||||||
|
= _cencEarthquakeTTSMessageGenerator.UseRawLocationName
|
||||||
|
= config.UseRawCENCLocationName;
|
||||||
|
|
||||||
return worker;
|
return worker;
|
||||||
}
|
}
|
||||||
static BMKGOpenDataWorker BuildBMKGOpenDataWorkerUris(BMKGOpenDataWorker worker, BMKGOpenDataEventSourceConfig config) {
|
static BMKGOpenDataWorker BuildBMKGOpenDataWorkerUris(BMKGOpenDataWorker worker, BMKGOpenDataEventSourceConfig config) {
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Assets/Plugins/Cryville.EEW.CENCStrongGroundMotion.Map.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.CENCStrongGroundMotion.Map.dll
Normal file
Binary file not shown.
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 550171b48a648b34e9ce5f1aba6244f1
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/Plugins/Cryville.EEW.CENCStrongGroundMotion.dll
Normal file
BIN
Assets/Plugins/Cryville.EEW.CENCStrongGroundMotion.dll
Normal file
Binary file not shown.
33
Assets/Plugins/Cryville.EEW.CENCStrongGroundMotion.dll.meta
Normal file
33
Assets/Plugins/Cryville.EEW.CENCStrongGroundMotion.dll.meta
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0f848a4ea2f35e7449e584beee48c659
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -14,10 +14,10 @@
|
|||||||
The shared instance of the <see cref="T:Cryville.EEW.TTS.EmptyTTSMessageGeneratorContext" /> class.
|
The shared instance of the <see cref="T:Cryville.EEW.TTS.EmptyTTSMessageGeneratorContext" /> class.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.TTS.EmptyTTSMessageGeneratorContext.LocationConverter">
|
<member name="P:Cryville.EEW.TTS.EmptyTTSMessageGeneratorContext.NowcastWarningDelayTolerance">
|
||||||
<inheritdoc />
|
<inheritdoc />
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.TTS.EmptyTTSMessageGeneratorContext.NowcastWarningDelayTolerance">
|
<member name="M:Cryville.EEW.TTS.EmptyTTSMessageGeneratorContext.NameLocation(System.Double,System.Double,System.Globalization.CultureInfo,System.Globalization.CultureInfo@,System.String@)">
|
||||||
<inheritdoc />
|
<inheritdoc />
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.TTS.ITTSMessageGeneratorContext">
|
<member name="T:Cryville.EEW.TTS.ITTSMessageGeneratorContext">
|
||||||
@@ -25,16 +25,22 @@
|
|||||||
Represents a context used in TTS message generators.
|
Represents a context used in TTS message generators.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.TTS.ITTSMessageGeneratorContext.LocationConverter">
|
|
||||||
<summary>
|
|
||||||
The location converter.
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.TTS.ITTSMessageGeneratorContext.NowcastWarningDelayTolerance">
|
<member name="P:Cryville.EEW.TTS.ITTSMessageGeneratorContext.NowcastWarningDelayTolerance">
|
||||||
<summary>
|
<summary>
|
||||||
The delay tolerance before a nowcast warning event cannot trigger sounds and TTS.
|
The delay tolerance before a nowcast warning event cannot trigger sounds and TTS.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Cryville.EEW.TTS.ITTSMessageGeneratorContext.NameLocation(System.Double,System.Double,System.Globalization.CultureInfo,System.Globalization.CultureInfo@,System.String@)">
|
||||||
|
<summary>
|
||||||
|
Names a location in a culture.
|
||||||
|
</summary>
|
||||||
|
<param name="lat">The latitude of the location.</param>
|
||||||
|
<param name="lon">The longitude of the location.</param>
|
||||||
|
<param name="localCulture">The local culture supported by the event itself.</param>
|
||||||
|
<param name="targetCulture">The target culture of the location name. When the method returns, set to the actual culture of the location name.</param>
|
||||||
|
<param name="name">The location name.</param>
|
||||||
|
<returns>Whether the name is given by the context. <see langword="false" /> if the generator should provide a local name instead.</returns>
|
||||||
|
</member>
|
||||||
<member name="T:Cryville.EEW.TTS.TTSEntry">
|
<member name="T:Cryville.EEW.TTS.TTSEntry">
|
||||||
<summary>
|
<summary>
|
||||||
Represents an entry sent to a TTS worker.
|
Represents an entry sent to a TTS worker.
|
||||||
@@ -101,7 +107,7 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.TTS.TTSEntry.IssueTime">
|
<member name="P:Cryville.EEW.TTS.TTSEntry.IssueTime">
|
||||||
<summary>
|
<summary>
|
||||||
The time when the entry is created.
|
The time when the entry is created in UTC.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -30,17 +30,17 @@
|
|||||||
<param name="amount">The amount of phase to increment.</param>
|
<param name="amount">The amount of phase to increment.</param>
|
||||||
<returns>The next delay value.</returns>
|
<returns>The next delay value.</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.EmptyLocationConverter">
|
<member name="T:Cryville.EEW.EmptyLocationNamer">
|
||||||
<summary>
|
<summary>
|
||||||
An empty <see cref="T:Cryville.EEW.ILocationConverter" />.
|
An empty <see cref="T:Cryville.EEW.ILocationNamer" />.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.EmptyLocationConverter.Instance">
|
<member name="P:Cryville.EEW.EmptyLocationNamer.Instance">
|
||||||
<summary>
|
<summary>
|
||||||
The shared instance of the <see cref="T:Cryville.EEW.EmptyLocationConverter" /> class.
|
The shared instance of the <see cref="T:Cryville.EEW.EmptyLocationNamer" /> class.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Cryville.EEW.EmptyLocationConverter.Convert(Cryville.EEW.INamedLocation,System.Globalization.CultureInfo@)">
|
<member name="M:Cryville.EEW.EmptyLocationNamer.Name(System.Double,System.Double,System.Globalization.CultureInfo@,System.Int32@)">
|
||||||
<inheritdoc />
|
<inheritdoc />
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.GeoUtils">
|
<member name="T:Cryville.EEW.GeoUtils">
|
||||||
@@ -213,18 +213,20 @@
|
|||||||
<param name="culture">The preferred culture of the generated object. When the method returns, set to the actual culture of the generated object.</param>
|
<param name="culture">The preferred culture of the generated object. When the method returns, set to the actual culture of the generated object.</param>
|
||||||
<returns>The generated object.</returns>
|
<returns>The generated object.</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.ILocationConverter">
|
<member name="T:Cryville.EEW.ILocationNamer">
|
||||||
<summary>
|
<summary>
|
||||||
Represents a converter that converts a named location to a name in a specified culture.
|
Represents a namer that names a location in a specified culture.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Cryville.EEW.ILocationConverter.Convert(Cryville.EEW.INamedLocation,System.Globalization.CultureInfo@)">
|
<member name="M:Cryville.EEW.ILocationNamer.Name(System.Double,System.Double,System.Globalization.CultureInfo@,System.Int32@)">
|
||||||
<summary>
|
<summary>
|
||||||
Converts a named location to a name in a specified culture.
|
Names a location in a specified culture.
|
||||||
</summary>
|
</summary>
|
||||||
<param name="location">The named location.</param>
|
<param name="lat">The latitude.</param>
|
||||||
|
<param name="lon">The longitude.</param>
|
||||||
<param name="culture">The preferred culture of the name. When the method returns, set to the actual culture of the name.</param>
|
<param name="culture">The preferred culture of the name. When the method returns, set to the actual culture of the name.</param>
|
||||||
<returns>The converted name.</returns>
|
<param name="specificity">The preferred specificity of the name. When the method returns, set to the actual specificity of the name.</param>
|
||||||
|
<returns>The name.</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.ISourceWorker">
|
<member name="T:Cryville.EEW.ISourceWorker">
|
||||||
<summary>
|
<summary>
|
||||||
@@ -349,6 +351,16 @@
|
|||||||
<returns>The string of the specified name in the resource.</returns>
|
<returns>The string of the specified name in the resource.</returns>
|
||||||
<exception cref="T:System.Collections.Generic.KeyNotFoundException">The string of the specified name is not found.</exception>
|
<exception cref="T:System.Collections.Generic.KeyNotFoundException">The string of the specified name is not found.</exception>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Cryville.EEW.MessageStringSetExtensions.GetStringOrDefault(Cryville.EEW.IMessageStringSet,System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Gets a string in the string set, or a default string in the string set if not found.
|
||||||
|
</summary>
|
||||||
|
<param name="set">The string set.</param>
|
||||||
|
<param name="name">The name of the string.</param>
|
||||||
|
<param name="defaultName">The name of the default string.</param>
|
||||||
|
<returns>The string of the specified name in the resource, or the default string of the specified default name in the string set if not found.</returns>
|
||||||
|
<exception cref="T:System.Collections.Generic.KeyNotFoundException">The default string of the specified default name is not found.</exception>
|
||||||
|
</member>
|
||||||
<member name="M:Cryville.EEW.MessageStringSetExtensions.GetStringSetRequired(Cryville.EEW.IMessageStringSet,System.String)">
|
<member name="M:Cryville.EEW.MessageStringSetExtensions.GetStringSetRequired(Cryville.EEW.IMessageStringSet,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
Gets a string set in the string set.
|
Gets a string set in the string set.
|
||||||
@@ -960,61 +972,6 @@
|
|||||||
</summary>
|
</summary>
|
||||||
<param name="value">An instance of the <see cref="T:Cryville.EEW.Models.XmlSerializedDateTimeOffset" /> struct.</param>
|
<param name="value">An instance of the <see cref="T:Cryville.EEW.Models.XmlSerializedDateTimeOffset" /> struct.</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.INamedLocation">
|
|
||||||
<summary>
|
|
||||||
Represents a named location.
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.INamedLocation.Name">
|
|
||||||
<summary>
|
|
||||||
The source name of the location.
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.INamedLocation.Culture">
|
|
||||||
<summary>
|
|
||||||
The source culture of <see cref="P:Cryville.EEW.INamedLocation.Name" />.
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.INamedLocation.Latitude">
|
|
||||||
<summary>
|
|
||||||
The latitude of the location.
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.INamedLocation.Longitude">
|
|
||||||
<summary>
|
|
||||||
The longitude of the location.
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="T:Cryville.EEW.NamedLocation">
|
|
||||||
<summary>
|
|
||||||
Represents a named location.
|
|
||||||
</summary>
|
|
||||||
<param name="Name">The source name of the location.</param>
|
|
||||||
<param name="Culture">The source culture of <paramref name="Name" />.</param>
|
|
||||||
<param name="Latitude">The latitude of the location.</param>
|
|
||||||
<param name="Longitude">The longitude of the location.</param>
|
|
||||||
</member>
|
|
||||||
<member name="M:Cryville.EEW.NamedLocation.#ctor(System.String,System.Globalization.CultureInfo,System.Double,System.Double)">
|
|
||||||
<summary>
|
|
||||||
Represents a named location.
|
|
||||||
</summary>
|
|
||||||
<param name="Name">The source name of the location.</param>
|
|
||||||
<param name="Culture">The source culture of <paramref name="Name" />.</param>
|
|
||||||
<param name="Latitude">The latitude of the location.</param>
|
|
||||||
<param name="Longitude">The longitude of the location.</param>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.NamedLocation.Name">
|
|
||||||
<summary>The source name of the location.</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.NamedLocation.Culture">
|
|
||||||
<summary>The source culture of <paramref name="Name" />.</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.NamedLocation.Latitude">
|
|
||||||
<summary>The latitude of the location.</summary>
|
|
||||||
</member>
|
|
||||||
<member name="P:Cryville.EEW.NamedLocation.Longitude">
|
|
||||||
<summary>The longitude of the location.</summary>
|
|
||||||
</member>
|
|
||||||
<member name="T:Cryville.EEW.NonstandardDateTimeJsonConverter">
|
<member name="T:Cryville.EEW.NonstandardDateTimeJsonConverter">
|
||||||
<summary>
|
<summary>
|
||||||
Converts instances of the <see cref="T:System.DateTime" /> struct to or from JSON.
|
Converts instances of the <see cref="T:System.DateTime" /> struct to or from JSON.
|
||||||
@@ -1039,7 +996,7 @@
|
|||||||
<member name="P:Cryville.EEW.Report.EmptyRVMGeneratorContext.SeverityScheme">
|
<member name="P:Cryville.EEW.Report.EmptyRVMGeneratorContext.SeverityScheme">
|
||||||
<inheritdoc />
|
<inheritdoc />
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Report.EmptyRVMGeneratorContext.LocationConverter">
|
<member name="M:Cryville.EEW.Report.EmptyRVMGeneratorContext.NameLocation(System.Double,System.Double,System.Globalization.CultureInfo,System.Globalization.CultureInfo@,System.String@,System.Int32@)">
|
||||||
<inheritdoc />
|
<inheritdoc />
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.Report.EmptySeverityScheme">
|
<member name="T:Cryville.EEW.Report.EmptySeverityScheme">
|
||||||
@@ -1192,10 +1149,34 @@
|
|||||||
The severity scheme.
|
The severity scheme.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:Cryville.EEW.Report.IRVMGeneratorContext.LocationConverter">
|
<member name="M:Cryville.EEW.Report.IRVMGeneratorContext.NameLocation(System.Double,System.Double,System.Globalization.CultureInfo,System.Globalization.CultureInfo@,System.String@,System.Int32@)">
|
||||||
<summary>
|
<summary>
|
||||||
The location converter.
|
Names a location in a culture.
|
||||||
</summary>
|
</summary>
|
||||||
|
<param name="lat">The latitude of the location.</param>
|
||||||
|
<param name="lon">The longitude of the location.</param>
|
||||||
|
<param name="localCulture">The local culture supported by the event itself.</param>
|
||||||
|
<param name="targetCulture">The target culture of the location name. When the method returns, set to the actual culture of the location name.</param>
|
||||||
|
<param name="name">The location name.</param>
|
||||||
|
<param name="specificity">The location specificity. See <see cref="P:Cryville.EEW.Report.ReportViewModel.LocationSpecificity" />.</param>
|
||||||
|
<returns>Whether the name is given by the context. <see langword="false" /> if the generator should provide a local name instead.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Cryville.EEW.Report.RVMGeneratorContextExtensions">
|
||||||
|
<summary>
|
||||||
|
Provides a set of <see langword="static" /> methods related to <see cref="T:Cryville.EEW.Report.IRVMGeneratorContext" />.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Cryville.EEW.Report.RVMGeneratorContextExtensions.NameLocationTo(Cryville.EEW.Report.IRVMGeneratorContext,Cryville.EEW.Report.ReportViewModel,System.Double,System.Double,System.Globalization.CultureInfo,System.Globalization.CultureInfo)">
|
||||||
|
<summary>
|
||||||
|
Names a location in a culture and sets the result to a report view model.
|
||||||
|
</summary>
|
||||||
|
<param name="context">The context.</param>
|
||||||
|
<param name="e">The report view model.</param>
|
||||||
|
<param name="lat">The latitude of the location.</param>
|
||||||
|
<param name="lon">The longitude of the location.</param>
|
||||||
|
<param name="localCulture">The local culture supported by the event itself.</param>
|
||||||
|
<param name="targetCulture">The target culture of the location name. When the method returns, set to the actual culture of the location name.</param>
|
||||||
|
<returns>Whether the name is given by the context. <see langword="false" /> if the generator should provide a local name instead.</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:Cryville.EEW.Report.ISeverityScheme">
|
<member name="T:Cryville.EEW.Report.ISeverityScheme">
|
||||||
<summary>
|
<summary>
|
||||||
|
Binary file not shown.
BIN
Assets/Plugins/Windows/Interop.SpeechLib.dll
Normal file
BIN
Assets/Plugins/Windows/Interop.SpeechLib.dll
Normal file
Binary file not shown.
76
Assets/Plugins/Windows/Interop.SpeechLib.dll.meta
Normal file
76
Assets/Plugins/Windows/Interop.SpeechLib.dll.meta
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 17df7db50754b8f459aa29934b507000
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
: Any
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
Exclude Android: 1
|
||||||
|
Exclude Editor: 0
|
||||||
|
Exclude Linux64: 1
|
||||||
|
Exclude OSXUniversal: 1
|
||||||
|
Exclude Win: 0
|
||||||
|
Exclude Win64: 0
|
||||||
|
- first:
|
||||||
|
Android: Android
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: ARMv7
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
OS: AnyOS
|
||||||
|
- first:
|
||||||
|
Standalone: Linux64
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: None
|
||||||
|
- first:
|
||||||
|
Standalone: OSXUniversal
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: None
|
||||||
|
- first:
|
||||||
|
Standalone: Win
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings:
|
||||||
|
CPU: x86
|
||||||
|
- first:
|
||||||
|
Standalone: Win64
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings:
|
||||||
|
CPU: x86_64
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
132
Assets/Prefabs/RegionView.prefab
Normal file
132
Assets/Prefabs/RegionView.prefab
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &2984379317001549352
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2984379317001549359}
|
||||||
|
- component: {fileID: 2962259339337128397}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: RegionView
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &2984379317001549359
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2984379317001549352}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 3524170046801625328}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &2962259339337128397
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2984379317001549352}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c57a0e86eb63b6048ba265e9d98e84f6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_spriteRenderer: {fileID: 3524170046801625329}
|
||||||
|
--- !u!1 &3524170046801625335
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3524170046801625328}
|
||||||
|
- component: {fileID: 3524170046801625329}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Area
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &3524170046801625328
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3524170046801625335}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0.5, y: 0.5, z: 1}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 2984379317001549359}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!212 &3524170046801625329
|
||||||
|
SpriteRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3524170046801625335}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 0
|
||||||
|
m_ReceiveShadows: 0
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 0
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 0
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 0.2509804}
|
||||||
|
m_FlipX: 0
|
||||||
|
m_FlipY: 0
|
||||||
|
m_DrawMode: 0
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_AdaptiveModeThreshold: 0.5
|
||||||
|
m_SpriteTileMode: 0
|
||||||
|
m_WasSpriteAssigned: 1
|
||||||
|
m_MaskInteraction: 0
|
||||||
|
m_SpriteSortPoint: 0
|
7
Assets/Prefabs/RegionView.prefab.meta
Normal file
7
Assets/Prefabs/RegionView.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bcdaa327335962646879336458cd7379
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
1973
Assets/RegionEditor.unity
Normal file
1973
Assets/RegionEditor.unity
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/RegionEditor.unity.meta
Normal file
7
Assets/RegionEditor.unity.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8d07fde72bae47a4990c95f764ca2b43
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -6,7 +6,7 @@
|
|||||||
"HeadlineMagnitude": " of magnitude {0:F1}",
|
"HeadlineMagnitude": " of magnitude {0:F1}",
|
||||||
"MaxIntensity": "The maximum intensity observed is {0}.",
|
"MaxIntensity": "The maximum intensity observed is {0}.",
|
||||||
"Region": "The epicenter is in {0}.",
|
"Region": "The epicenter is in {0}.",
|
||||||
"Title": "Earthquake Data.",
|
"Title": "Earthquake data.",
|
||||||
"TitleStandAlone": "Earthquake Data"
|
"TitleStandAlone": "Earthquake data"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -6,7 +6,7 @@
|
|||||||
"HeadlineMagnitude": ", dengan magnitudo {0:F1}",
|
"HeadlineMagnitude": ", dengan magnitudo {0:F1}",
|
||||||
"MaxIntensity": "Intensitas gempa maksimum yang dirasakan adalah {0}.",
|
"MaxIntensity": "Intensitas gempa maksimum yang dirasakan adalah {0}.",
|
||||||
"Region": "Pusat gempa berada di {0}.",
|
"Region": "Pusat gempa berada di {0}.",
|
||||||
"Title": "Data Gempabumi.",
|
"Title": "Data gempabumi.",
|
||||||
"TitleStandAlone": "Data Gempabumi"
|
"TitleStandAlone": "Data gempabumi"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -3,7 +3,7 @@
|
|||||||
"Strings": {
|
"Strings": {
|
||||||
"Headline": "印度尼西亞西部時間{0},發生咗一次{1}地震。{2}",
|
"Headline": "印度尼西亞西部時間{0},發生咗一次{1}地震。{2}",
|
||||||
"HeadlineDepth": "震源深度{0}公里。",
|
"HeadlineDepth": "震源深度{0}公里。",
|
||||||
"HeadlineMagnitude": "規模{0:F1}級。",
|
"HeadlineMagnitude": "震級{0:F1}級",
|
||||||
"MaxIntensity": "觀測到嘅最大烈度為{0}。",
|
"MaxIntensity": "觀測到嘅最大烈度為{0}。",
|
||||||
"Region": "震中位於{0}。",
|
"Region": "震中位於{0}。",
|
||||||
"Title": "地震數據。",
|
"Title": "地震數據。",
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
"Strings": {
|
"Strings": {
|
||||||
"Headline": "印度尼西亞西部時間{0},發生了一次{1}地震。{2}",
|
"Headline": "印度尼西亞西部時間{0},發生了一次{1}地震。{2}",
|
||||||
"HeadlineDepth": "震源深度{0}公里。",
|
"HeadlineDepth": "震源深度{0}公里。",
|
||||||
"HeadlineMagnitude": "規模{0:F1}級。",
|
"HeadlineMagnitude": "規模{0:F1}級",
|
||||||
"MaxIntensity": "觀測到的最大震度為{0}。",
|
"MaxIntensity": "觀測到的最大震度為{0}。",
|
||||||
"Region": "震中位於{0}。",
|
"Region": "震中位於{0}。",
|
||||||
"Title": "地震數據。",
|
"Title": "地震數據。",
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
"Strings": {
|
"Strings": {
|
||||||
"Headline": "印度尼西亚西部时间{0},发生了一次{1}地震。{2}",
|
"Headline": "印度尼西亚西部时间{0},发生了一次{1}地震。{2}",
|
||||||
"HeadlineDepth": "震源深度{0}千米。",
|
"HeadlineDepth": "震源深度{0}千米。",
|
||||||
"HeadlineMagnitude": "规模{0:F1}级",
|
"HeadlineMagnitude": "震级{0:F1}级",
|
||||||
"MaxIntensity": "观测到的最大烈度为{0}。",
|
"MaxIntensity": "观测到的最大烈度为{0}。",
|
||||||
"Region": "震中位于{0}。",
|
"Region": "震中位于{0}。",
|
||||||
"Title": "地震数据。",
|
"Title": "地震数据。",
|
||||||
|
@@ -1,6 +1,12 @@
|
|||||||
{
|
{
|
||||||
"Culture": "en-US",
|
"Culture": "en-US",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "BMKG Open Data"
|
"AuthorityName": "BMKG",
|
||||||
|
"PropertyDepth": "Depth",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyMaxIntensity": "Max intensity",
|
||||||
|
"SourceName": "BMKG Open Data",
|
||||||
|
"Title": "Earthquake data"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,12 @@
|
|||||||
{
|
{
|
||||||
"Culture": "id-ID",
|
"Culture": "id-ID",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "Data Terbuka BMKG"
|
"AuthorityName": "BMKG",
|
||||||
|
"PropertyDepth": "Kedalaman",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyMaxIntensity": "Intensitas maks.",
|
||||||
|
"SourceName": "Data Terbuka BMKG",
|
||||||
|
"Title": "Data gempabumi"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,12 @@
|
|||||||
{
|
{
|
||||||
"Culture": "yue-HK",
|
"Culture": "yue-HK",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "BMKG 開放數據"
|
"AuthorityName": "BMKG",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyMaxIntensity": "最大烈度",
|
||||||
|
"SourceName": "BMKG 開放數據",
|
||||||
|
"Title": "地震數據"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,12 @@
|
|||||||
{
|
{
|
||||||
"Culture": "zh-TW",
|
"Culture": "zh-TW",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "BMKG 開放數據"
|
"AuthorityName": "BMKG",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyMaxIntensity": "最大震度",
|
||||||
|
"SourceName": "BMKG 開放數據",
|
||||||
|
"Title": "地震數據"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,12 @@
|
|||||||
{
|
{
|
||||||
"Culture": "zh-CN",
|
"Culture": "zh-CN",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "BMKG 开放数据"
|
"AuthorityName": "BMKG",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyMaxIntensity": "最大烈度",
|
||||||
|
"SourceName": "BMKG 开放数据",
|
||||||
|
"Title": "地震数据"
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -13,6 +13,7 @@
|
|||||||
"Title": {
|
"Title": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"地震報告": "Earthquake report",
|
"地震報告": "Earthquake report",
|
||||||
|
"海嘯消息": "Tsunami message",
|
||||||
"海嘯警報": "Tsunami warning",
|
"海嘯警報": "Tsunami warning",
|
||||||
"海嘯警報解除": "Tsunami warning lifted"
|
"海嘯警報解除": "Tsunami warning lifted"
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"Culture": "yue-HK",
|
"Culture": "yue-HK",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"EarthquakeBody": "{0},{1}發生規模{2:F1}有感地震,最大震度{3}。",
|
"EarthquakeBody": "{0},{1}發生震級{2:F1}有感地震,最大震度{3}。",
|
||||||
"EarthquakeFocalDepth": "震源深度{0}公里。",
|
"EarthquakeFocalDepth": "震源深度{0}公里。",
|
||||||
"TsunamiForecast": "以下地區預計海嘯高度{0}。",
|
"TsunamiForecast": "以下地區預計海嘯高度{0}。",
|
||||||
"TsunamiForecastArea": "{0}。預計到達時間{1:HH:mm}。",
|
"TsunamiForecastArea": "{0}。預計到達時間{1:HH:mm}。",
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
"Title": {
|
"Title": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"地震報告": "地震報告",
|
"地震報告": "地震報告",
|
||||||
|
"海嘯消息": "海嘯消息",
|
||||||
"海嘯警報": "海嘯警報",
|
"海嘯警報": "海嘯警報",
|
||||||
"海嘯警報解除": "海嘯警報解除"
|
"海嘯警報解除": "海嘯警報解除"
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"Culture": "zh-CN",
|
"Culture": "zh-CN",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"EarthquakeBody": "{0},{1}发生规模{2:F1}有感地震,最大震度{3}。",
|
"EarthquakeBody": "{0},{1}发生震级{2:F1}有感地震,最大震度{3}。",
|
||||||
"EarthquakeFocalDepth": "震源深度{0}千米。",
|
"EarthquakeFocalDepth": "震源深度{0}千米。",
|
||||||
"TsunamiForecast": "以下地区预计海啸高度{0}。",
|
"TsunamiForecast": "以下地区预计海啸高度{0}。",
|
||||||
"TsunamiForecastArea": "{0}。预计到达时间{1:HH:mm}。",
|
"TsunamiForecastArea": "{0}。预计到达时间{1:HH:mm}。",
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
"Title": {
|
"Title": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"地震報告": "地震报告",
|
"地震報告": "地震报告",
|
||||||
|
"海嘯消息": "海啸消息",
|
||||||
"海嘯警報": "海啸警报",
|
"海嘯警報": "海啸警报",
|
||||||
"海嘯警報解除": "海啸警报解除"
|
"海嘯警報解除": "海啸警报解除"
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,15 @@
|
|||||||
{
|
{
|
||||||
"Culture": "en-US",
|
"Culture": "en-US",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
|
"AuthorityName": "CWA",
|
||||||
|
"PropertyDepth": "Depth",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMaxIntensity": "Max intensity",
|
||||||
|
"PropertyMaxTsunamiHeight": "Max tsunami height",
|
||||||
|
"PropertyMaxTsunamiHeightValue": "{0}m",
|
||||||
|
"PropertyMaxTsunamiHeightValueUnknown": "Unknown",
|
||||||
|
"PropertyTsunamiMessage": "Tsunami message",
|
||||||
|
"PropertyTsunamiWarning": "Tsunami warning",
|
||||||
"SourceName": "CWA ({0})"
|
"SourceName": "CWA ({0})"
|
||||||
},
|
},
|
||||||
"StringSets": {
|
"StringSets": {
|
||||||
@@ -9,6 +18,20 @@
|
|||||||
"Earthquake": "Earthquake",
|
"Earthquake": "Earthquake",
|
||||||
"Tsunami": "Tsunami"
|
"Tsunami": "Tsunami"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"PropertyMagnitude": {
|
||||||
|
"Strings": {
|
||||||
|
"": "Magnitude",
|
||||||
|
"芮氏規模": "Richter magnitude"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Title": {
|
||||||
|
"Strings": {
|
||||||
|
"地震報告": "Earthquake report",
|
||||||
|
"海嘯消息": "Tsunami message",
|
||||||
|
"海嘯警報": "Tsunami warning",
|
||||||
|
"海嘯警報解除": "Tsunami warning lifted"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,15 @@
|
|||||||
{
|
{
|
||||||
"Culture": "zh-TW",
|
"Culture": "zh-TW",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
|
"AuthorityName": "CWA",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMaxIntensity": "最大震度",
|
||||||
|
"PropertyMaxTsunamiHeight": "最大波高",
|
||||||
|
"PropertyMaxTsunamiHeightValue": "{0}m",
|
||||||
|
"PropertyMaxTsunamiHeightValueUnknown": "不明",
|
||||||
|
"PropertyTsunamiMessage": "海\u2060嘯消\u2060息",
|
||||||
|
"PropertyTsunamiWarning": "海\u2060嘯警\u2060報",
|
||||||
"SourceName": "CWA({0})"
|
"SourceName": "CWA({0})"
|
||||||
},
|
},
|
||||||
"StringSets": {
|
"StringSets": {
|
||||||
@@ -9,6 +18,20 @@
|
|||||||
"Earthquake": "地震",
|
"Earthquake": "地震",
|
||||||
"Tsunami": "海嘯"
|
"Tsunami": "海嘯"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"PropertyMagnitude": {
|
||||||
|
"Strings": {
|
||||||
|
"": "規模",
|
||||||
|
"芮氏規模": "芮氏規模"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Title": {
|
||||||
|
"Strings": {
|
||||||
|
"地震報告": "地震報告",
|
||||||
|
"海嘯消息": "海嘯消息",
|
||||||
|
"海嘯警報": "海嘯警報",
|
||||||
|
"海嘯警報解除": "海嘯警報解除"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,15 @@
|
|||||||
{
|
{
|
||||||
"Culture": "yue-HK",
|
"Culture": "yue-HK",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
|
"AuthorityName": "CWA",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMaxIntensity": "最大震度",
|
||||||
|
"PropertyMaxTsunamiHeight": "最大波高",
|
||||||
|
"PropertyMaxTsunamiHeightValue": "{0}m",
|
||||||
|
"PropertyMaxTsunamiHeightValueUnknown": "不明",
|
||||||
|
"PropertyTsunamiMessage": "海\u2060嘯消\u2060息",
|
||||||
|
"PropertyTsunamiWarning": "海\u2060嘯警\u2060報",
|
||||||
"SourceName": "CWA({0})"
|
"SourceName": "CWA({0})"
|
||||||
},
|
},
|
||||||
"StringSets": {
|
"StringSets": {
|
||||||
@@ -9,6 +18,20 @@
|
|||||||
"Earthquake": "地震",
|
"Earthquake": "地震",
|
||||||
"Tsunami": "海嘯"
|
"Tsunami": "海嘯"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"PropertyMagnitude": {
|
||||||
|
"Strings": {
|
||||||
|
"": "震級",
|
||||||
|
"芮氏規模": "黎克特制震級"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Title": {
|
||||||
|
"Strings": {
|
||||||
|
"地震報告": "地震報告",
|
||||||
|
"海嘯消息": "海嘯消息",
|
||||||
|
"海嘯警報": "海嘯警報",
|
||||||
|
"海嘯警報解除": "海嘯警報解除"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,15 @@
|
|||||||
{
|
{
|
||||||
"Culture": "zh-CN",
|
"Culture": "zh-CN",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
|
"AuthorityName": "CWA",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMaxIntensity": "最大震度",
|
||||||
|
"PropertyMaxTsunamiHeight": "最大波高",
|
||||||
|
"PropertyMaxTsunamiHeightValue": "{0}m",
|
||||||
|
"PropertyMaxTsunamiHeightValueUnknown": "不明",
|
||||||
|
"PropertyTsunamiMessage": "海\u2060啸消\u2060息",
|
||||||
|
"PropertyTsunamiWarning": "海\u2060啸警\u2060报",
|
||||||
"SourceName": "CWA({0})"
|
"SourceName": "CWA({0})"
|
||||||
},
|
},
|
||||||
"StringSets": {
|
"StringSets": {
|
||||||
@@ -9,6 +18,20 @@
|
|||||||
"Earthquake": "地震",
|
"Earthquake": "地震",
|
||||||
"Tsunami": "海啸"
|
"Tsunami": "海啸"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"PropertyMagnitude": {
|
||||||
|
"Strings": {
|
||||||
|
"": "震级",
|
||||||
|
"芮氏規模": "里氏震级"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Title": {
|
||||||
|
"Strings": {
|
||||||
|
"地震報告": "地震报告",
|
||||||
|
"海嘯消息": "海啸消息",
|
||||||
|
"海嘯警報": "海啸警报",
|
||||||
|
"海嘯警報解除": "海啸警报解除"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,11 @@
|
|||||||
{
|
{
|
||||||
"Culture": "en-US",
|
"Culture": "en-US",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "EMSC"
|
"AuthorityName": "EMSC",
|
||||||
|
"AuthorityNameForwarded": "EMSC | {0}",
|
||||||
|
"PropertyDepth": "Depth",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"SourceName": "EMSC",
|
||||||
|
"Title": "Earthquake event"
|
||||||
}
|
}
|
||||||
}
|
}
|
11
Assets/StreamingAssets/Messages/Cryville.EEW.EMSC/yue.json
Normal file
11
Assets/StreamingAssets/Messages/Cryville.EEW.EMSC/yue.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"Culture": "yue-HK",
|
||||||
|
"Strings": {
|
||||||
|
"AuthorityName": "EMSC",
|
||||||
|
"AuthorityNameForwarded": "EMSC | {0}",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"SourceName": "EMSC",
|
||||||
|
"Title": "地震事件"
|
||||||
|
}
|
||||||
|
}
|
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 9c44f369185730644b6e777e84ee0569
|
guid: 0bc7279c4dd92ae43afb3f503643a84c
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"Culture": "zh-TW",
|
||||||
|
"Strings": {
|
||||||
|
"AuthorityName": "EMSC",
|
||||||
|
"AuthorityNameForwarded": "EMSC | {0}",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"SourceName": "EMSC",
|
||||||
|
"Title": "地震事件"
|
||||||
|
}
|
||||||
|
}
|
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 704940476687b1b43a713305dd275d3c
|
guid: dcc04accbfc4e6b43a60d0bac2a76202
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
11
Assets/StreamingAssets/Messages/Cryville.EEW.EMSC/zh.json
Normal file
11
Assets/StreamingAssets/Messages/Cryville.EEW.EMSC/zh.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"Culture": "zh-CN",
|
||||||
|
"Strings": {
|
||||||
|
"AuthorityName": "EMSC",
|
||||||
|
"AuthorityNameForwarded": "EMSC | {0}",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"SourceName": "EMSC",
|
||||||
|
"Title": "地震事件"
|
||||||
|
}
|
||||||
|
}
|
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 643c09fce5fa33048a0a599cab63f9e3
|
guid: c900640f0d0bccc42a6017504c74a8cb
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
@@ -52,7 +52,7 @@
|
|||||||
"142": "ウルグアイ",
|
"142": "ウルグアイ",
|
||||||
"143": "チリ南部沖",
|
"143": "チリ南部沖",
|
||||||
"144": "チリ南部",
|
"144": "チリ南部",
|
||||||
"145": "チリ南部/アルゼンチン国境",
|
"145": "チリ/アルゼンチン国境南部",
|
||||||
"146": "アルゼンチン南部",
|
"146": "アルゼンチン南部",
|
||||||
"147": "ティエラデルフエゴ",
|
"147": "ティエラデルフエゴ",
|
||||||
"148": "フォークランド諸島",
|
"148": "フォークランド諸島",
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
"304": "カシミール/チベット自治区(中国)境界",
|
"304": "カシミール/チベット自治区(中国)境界",
|
||||||
"305": "チベット自治区西部(中国)/インド国境",
|
"305": "チベット自治区西部(中国)/インド国境",
|
||||||
"306": "チベット自治区(中国)",
|
"306": "チベット自治区(中国)",
|
||||||
"307": "中国、スーチョワン(四川)省",
|
"307": "中国、スーチョワン(四川)省/チョンチン(重慶)市",
|
||||||
"308": "インド北部",
|
"308": "インド北部",
|
||||||
"309": "ネパール/インド国境",
|
"309": "ネパール/インド国境",
|
||||||
"31": "オレゴン州沿岸",
|
"31": "オレゴン州沿岸",
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
"320": "キルギス/シンチアンウイグル自治区(中国)国境",
|
"320": "キルギス/シンチアンウイグル自治区(中国)国境",
|
||||||
"321": "中国、シンチアンウイグル自治区南部",
|
"321": "中国、シンチアンウイグル自治区南部",
|
||||||
"322": "中国、カンスー(甘粛)省",
|
"322": "中国、カンスー(甘粛)省",
|
||||||
"323": "中国、ネイモンクー(内蒙古)自治区西部",
|
"323": "中国、ネイモンクー(内蒙古)自治区西部/ニンシャー(寧夏)回族自治区",
|
||||||
"324": "カシミール/シンチアンウイグル自治区(中国)境界",
|
"324": "カシミール/シンチアンウイグル自治区(中国)境界",
|
||||||
"325": "中国、チンハイ(青海)省",
|
"325": "中国、チンハイ(青海)省",
|
||||||
"326": "シベリア南西部",
|
"326": "シベリア南西部",
|
||||||
@@ -283,7 +283,7 @@
|
|||||||
"350": "アフガニスタン南西部",
|
"350": "アフガニスタン南西部",
|
||||||
"351": "アラビア半島東部",
|
"351": "アラビア半島東部",
|
||||||
"352": "ペルシャ湾",
|
"352": "ペルシャ湾",
|
||||||
"353": "イラン",
|
"353": "イラン南部",
|
||||||
"354": "パキスタン南西部",
|
"354": "パキスタン南西部",
|
||||||
"355": "オマーン湾",
|
"355": "オマーン湾",
|
||||||
"356": "パキスタン沖",
|
"356": "パキスタン沖",
|
||||||
@@ -429,7 +429,7 @@
|
|||||||
"482": "ミズーリ/カンザス州境",
|
"482": "ミズーリ/カンザス州境",
|
||||||
"483": "ミズーリ州",
|
"483": "ミズーリ州",
|
||||||
"484": "ミズーリ/アーカンソー州境",
|
"484": "ミズーリ/アーカンソー州境",
|
||||||
"485": "ミズーリ/イリノイ州境",
|
"485": "ミズーリ州東部",
|
||||||
"486": "ミズーリ州南東部",
|
"486": "ミズーリ州南東部",
|
||||||
"487": "ミズーリ州、ケープジラード",
|
"487": "ミズーリ州、ケープジラード",
|
||||||
"488": "イリノイ州南部",
|
"488": "イリノイ州南部",
|
||||||
@@ -442,7 +442,7 @@
|
|||||||
"494": "ニュージャージー州",
|
"494": "ニュージャージー州",
|
||||||
"495": "アリゾナ州東部",
|
"495": "アリゾナ州東部",
|
||||||
"496": "ニューメキシコ州",
|
"496": "ニューメキシコ州",
|
||||||
"497": "テキサス州北西部/オクラホマ州境",
|
"497": "テキサス州回廊地帯",
|
||||||
"498": "テキサス州西部",
|
"498": "テキサス州西部",
|
||||||
"499": "オクラホマ州",
|
"499": "オクラホマ州",
|
||||||
"5": "アリューシャン列島ニア諸島",
|
"5": "アリューシャン列島ニア諸島",
|
||||||
@@ -558,7 +558,7 @@
|
|||||||
"599": "オーストラリア南方沖",
|
"599": "オーストラリア南方沖",
|
||||||
"6": "アリューシャン列島ラット諸島",
|
"6": "アリューシャン列島ラット諸島",
|
||||||
"60": "オアハカ州",
|
"60": "オアハカ州",
|
||||||
"600": "オーストラリア南岸",
|
"600": "サウスオーストラリア沿岸",
|
||||||
"601": "ニューサウスウェールズ",
|
"601": "ニューサウスウェールズ",
|
||||||
"602": "オーストラリア、ビクトリア",
|
"602": "オーストラリア、ビクトリア",
|
||||||
"603": "オーストラリア南東岸",
|
"603": "オーストラリア南東岸",
|
||||||
@@ -630,7 +630,7 @@
|
|||||||
"663": "オホーツク海",
|
"663": "オホーツク海",
|
||||||
"664": "中国南東部",
|
"664": "中国南東部",
|
||||||
"665": "黄海",
|
"665": "黄海",
|
||||||
"666": "中国南東部東方沖",
|
"666": "中国東部東方沖",
|
||||||
"667": "ノボシビルスク(ニューシベリアン)諸島北方",
|
"667": "ノボシビルスク(ニューシベリアン)諸島北方",
|
||||||
"668": "ノボシビルスク(ニューシベリアン)諸島",
|
"668": "ノボシビルスク(ニューシベリアン)諸島",
|
||||||
"669": "東シベリア海",
|
"669": "東シベリア海",
|
||||||
@@ -678,7 +678,7 @@
|
|||||||
"706": "スマトラ北部",
|
"706": "スマトラ北部",
|
||||||
"707": "マレー半島",
|
"707": "マレー半島",
|
||||||
"708": "タイ湾",
|
"708": "タイ湾",
|
||||||
"709": "アフガニスタン",
|
"709": "アフガニスタン南東部",
|
||||||
"71": "グアテマラ沿岸",
|
"71": "グアテマラ沿岸",
|
||||||
"710": "パキスタン",
|
"710": "パキスタン",
|
||||||
"711": "カシミール南西部",
|
"711": "カシミール南西部",
|
||||||
@@ -756,7 +756,7 @@
|
|||||||
"95": "ウィンドワード諸島",
|
"95": "ウィンドワード諸島",
|
||||||
"96": "コロンビア北岸",
|
"96": "コロンビア北岸",
|
||||||
"97": "ベネズエラ沿岸",
|
"97": "ベネズエラ沿岸",
|
||||||
"98": "トリニダード・トバゴ",
|
"98": "トリニダード",
|
||||||
"99": "コロンビア北部",
|
"99": "コロンビア北部",
|
||||||
"AU": "オーストラリア",
|
"AU": "オーストラリア",
|
||||||
"CA": "カナダ",
|
"CA": "カナダ",
|
||||||
@@ -769,8 +769,10 @@
|
|||||||
"KI": "キリバス",
|
"KI": "キリバス",
|
||||||
"MacroregionFormat": "{0}、{1}",
|
"MacroregionFormat": "{0}、{1}",
|
||||||
"MX": "メキシコ",
|
"MX": "メキシコ",
|
||||||
|
"NC": "ニューカレドニア",
|
||||||
"NO": "ノルウェー",
|
"NO": "ノルウェー",
|
||||||
"NZ": "ニュージーランド",
|
"NZ": "ニュージーランド",
|
||||||
|
"PF": "フランス領ポリネシア",
|
||||||
"PG": "パプアニューギニア",
|
"PG": "パプアニューギニア",
|
||||||
"PT": "ポルトガル",
|
"PT": "ポルトガル",
|
||||||
"RU": "ロシア",
|
"RU": "ロシア",
|
||||||
|
@@ -18,8 +18,8 @@
|
|||||||
"111": "northern Peru",
|
"111": "northern Peru",
|
||||||
"112": "Peru-Brazil border",
|
"112": "Peru-Brazil border",
|
||||||
"113": "Amazonas, Brazil",
|
"113": "Amazonas, Brazil",
|
||||||
"114": "off the coast of central Peru",
|
"114": "off the coast of Peru",
|
||||||
"115": "near the coast of central Peru",
|
"115": "near the coast of Peru",
|
||||||
"116": "central Peru",
|
"116": "central Peru",
|
||||||
"117": "southern Peru",
|
"117": "southern Peru",
|
||||||
"118": "Peru-Bolivia border",
|
"118": "Peru-Bolivia border",
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
"185": "Vanuatu vicinity",
|
"185": "Vanuatu vicinity",
|
||||||
"186": "Vanuatu",
|
"186": "Vanuatu",
|
||||||
"187": "New Caledonia",
|
"187": "New Caledonia",
|
||||||
"188": "Loyalty Islands, New Caledonia",
|
"188": "Loyalty Islands",
|
||||||
"189": "southeast of the Loyalty Islands",
|
"189": "southeast of the Loyalty Islands",
|
||||||
"19": "southeastern Alaska",
|
"19": "southeastern Alaska",
|
||||||
"190": "New Ireland",
|
"190": "New Ireland",
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
"304": "Kashmir-Xizang border",
|
"304": "Kashmir-Xizang border",
|
||||||
"305": "western Xizang-India border",
|
"305": "western Xizang-India border",
|
||||||
"306": "Xizang, China",
|
"306": "Xizang, China",
|
||||||
"307": "Sichuan, China",
|
"307": "Sichuan-Chongqing, China",
|
||||||
"308": "northern India",
|
"308": "northern India",
|
||||||
"309": "Nepal-India border",
|
"309": "Nepal-India border",
|
||||||
"31": "near the coast of Oregon",
|
"31": "near the coast of Oregon",
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
"320": "Kyrgyzstan-Xinjiang border",
|
"320": "Kyrgyzstan-Xinjiang border",
|
||||||
"321": "southern Xinjiang, China",
|
"321": "southern Xinjiang, China",
|
||||||
"322": "Gansu, China",
|
"322": "Gansu, China",
|
||||||
"323": "western Nei Mongol, China",
|
"323": "western Nei Mongol-Ningxia, China",
|
||||||
"324": "Kashmir-Xinjiang border",
|
"324": "Kashmir-Xinjiang border",
|
||||||
"325": "Qinghai, China",
|
"325": "Qinghai, China",
|
||||||
"326": "southwestern Siberia",
|
"326": "southwestern Siberia",
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
"340": "Turkmenistan",
|
"340": "Turkmenistan",
|
||||||
"341": "Turkmenistan-Iran border",
|
"341": "Turkmenistan-Iran border",
|
||||||
"342": "Turkmenistan-Afghanistan border",
|
"342": "Turkmenistan-Afghanistan border",
|
||||||
"343": "Turkey-Iran border",
|
"343": "Türkiye-Iran border",
|
||||||
"344": "Armenia-Azerbaijan-Iran border",
|
"344": "Armenia-Azerbaijan-Iran border",
|
||||||
"345": "northwestern Iran",
|
"345": "northwestern Iran",
|
||||||
"346": "Iran-Iraq border",
|
"346": "Iran-Iraq border",
|
||||||
@@ -297,8 +297,8 @@
|
|||||||
"363": "Greece-Bulgaria border",
|
"363": "Greece-Bulgaria border",
|
||||||
"364": "Greece",
|
"364": "Greece",
|
||||||
"365": "Aegean Sea",
|
"365": "Aegean Sea",
|
||||||
"366": "eastern Turkey",
|
"366": "Türkiye",
|
||||||
"367": "Georgia-Armenia-Turkey border",
|
"367": "Georgia-Armenia-Türkiye border",
|
||||||
"368": "southern Greece",
|
"368": "southern Greece",
|
||||||
"369": "Dodecanese Islands, Greece",
|
"369": "Dodecanese Islands, Greece",
|
||||||
"37": "Nevada",
|
"37": "Nevada",
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
"371": "eastern Mediterranean Sea",
|
"371": "eastern Mediterranean Sea",
|
||||||
"372": "Cyprus",
|
"372": "Cyprus",
|
||||||
"373": "Dead Sea",
|
"373": "Dead Sea",
|
||||||
"374": "Syria",
|
"374": "Jordan-Syria",
|
||||||
"375": "Iraq",
|
"375": "Iraq",
|
||||||
"376": "Portugal",
|
"376": "Portugal",
|
||||||
"377": "Spain",
|
"377": "Spain",
|
||||||
@@ -385,18 +385,18 @@
|
|||||||
"442": "Hudson Strait",
|
"442": "Hudson Strait",
|
||||||
"443": "northern Quebec",
|
"443": "northern Quebec",
|
||||||
"444": "Davis Strait",
|
"444": "Davis Strait",
|
||||||
"445": "Labrador, Newfoundland and Labrador",
|
"445": "Labrador",
|
||||||
"446": "Labrador Sea",
|
"446": "Labrador Sea",
|
||||||
"447": "southern Quebec",
|
"447": "southern Quebec",
|
||||||
"448": "Gaspe Peninsula, Quebec",
|
"448": "Gaspe Peninsula",
|
||||||
"449": "eastern Quebec",
|
"449": "eastern Quebec",
|
||||||
"45": "California-Baja California border",
|
"45": "California-Baja California border",
|
||||||
"450": "Anticosti Island, Quebec",
|
"450": "Anticosti Island",
|
||||||
"451": "New Brunswick",
|
"451": "New Brunswick",
|
||||||
"452": "Nova Scotia",
|
"452": "Nova Scotia",
|
||||||
"453": "Prince Edward Island",
|
"453": "Prince Edward Island",
|
||||||
"454": "Gulf of St. Lawrence",
|
"454": "Gulf of St. Lawrence",
|
||||||
"455": "Newfoundland, Newfoundland and Labrador",
|
"455": "Newfoundland",
|
||||||
"456": "Montana",
|
"456": "Montana",
|
||||||
"457": "eastern Idaho",
|
"457": "eastern Idaho",
|
||||||
"458": "Hebgen Lake",
|
"458": "Hebgen Lake",
|
||||||
@@ -507,7 +507,7 @@
|
|||||||
"552": "Libya",
|
"552": "Libya",
|
||||||
"553": "Egypt",
|
"553": "Egypt",
|
||||||
"554": "Red Sea",
|
"554": "Red Sea",
|
||||||
"555": "western Saudi Arabia",
|
"555": "western Arabian Peninsula",
|
||||||
"556": "Chad",
|
"556": "Chad",
|
||||||
"557": "Sudan",
|
"557": "Sudan",
|
||||||
"558": "Ethiopia",
|
"558": "Ethiopia",
|
||||||
@@ -588,11 +588,11 @@
|
|||||||
"625": "Tokelau",
|
"625": "Tokelau",
|
||||||
"626": "northern Cook Islands",
|
"626": "northern Cook Islands",
|
||||||
"627": "Cook Islands",
|
"627": "Cook Islands",
|
||||||
"628": "Society Islands, French Polynesia",
|
"628": "Society Islands",
|
||||||
"629": "Tubuai Islands, French Polynesia",
|
"629": "Tubuai Islands",
|
||||||
"63": "off the coast of Mexico",
|
"63": "off the coast of Mexico",
|
||||||
"630": "Marquesas Islands, French Polynesia",
|
"630": "Marquesas Islands",
|
||||||
"631": "Tuamotu Archipelago, French Polynesia",
|
"631": "Tuamotu Archipelago",
|
||||||
"632": "South Pacific Ocean",
|
"632": "South Pacific Ocean",
|
||||||
"633": "Lomonosov Ridge",
|
"633": "Lomonosov Ridge",
|
||||||
"634": "Arctic Ocean",
|
"634": "Arctic Ocean",
|
||||||
@@ -648,7 +648,7 @@
|
|||||||
"68": "off the coast of Chiapas",
|
"68": "off the coast of Chiapas",
|
||||||
"680": "western Greenland",
|
"680": "western Greenland",
|
||||||
"681": "Baffin Bay",
|
"681": "Baffin Bay",
|
||||||
"682": "Baffin Island, Nunavut",
|
"682": "Baffin Island",
|
||||||
"683": "southeast central Pacific Ocean",
|
"683": "southeast central Pacific Ocean",
|
||||||
"684": "southern East Pacific Rise",
|
"684": "southern East Pacific Rise",
|
||||||
"685": "Easter Island",
|
"685": "Easter Island",
|
||||||
@@ -678,7 +678,7 @@
|
|||||||
"706": "northern Sumatra",
|
"706": "northern Sumatra",
|
||||||
"707": "Malay Peninsula, Malaysia",
|
"707": "Malay Peninsula, Malaysia",
|
||||||
"708": "Gulf of Thailand",
|
"708": "Gulf of Thailand",
|
||||||
"709": "central Afghanistan",
|
"709": "southeastern Afghanistan",
|
||||||
"71": "near the coast of Guatemala",
|
"71": "near the coast of Guatemala",
|
||||||
"710": "Pakistan",
|
"710": "Pakistan",
|
||||||
"711": "southwestern Kashmir",
|
"711": "southwestern Kashmir",
|
||||||
@@ -769,8 +769,10 @@
|
|||||||
"KI": "Kiribati",
|
"KI": "Kiribati",
|
||||||
"MacroregionFormat": "{1}, {0}",
|
"MacroregionFormat": "{1}, {0}",
|
||||||
"MX": "Mexico",
|
"MX": "Mexico",
|
||||||
|
"NC": "New Caledonia",
|
||||||
"NO": "Norway",
|
"NO": "Norway",
|
||||||
"NZ": "New Zealand",
|
"NZ": "New Zealand",
|
||||||
|
"PF": "French Polynesia",
|
||||||
"PG": "Papua New Guinea",
|
"PG": "Papua New Guinea",
|
||||||
"PT": "Portugal",
|
"PT": "Portugal",
|
||||||
"RU": "Russia",
|
"RU": "Russia",
|
||||||
|
@@ -11,15 +11,15 @@
|
|||||||
"105": "厄瓜多爾沿岸",
|
"105": "厄瓜多爾沿岸",
|
||||||
"106": "哥倫比亞—厄瓜多爾邊境",
|
"106": "哥倫比亞—厄瓜多爾邊境",
|
||||||
"107": "厄瓜多爾",
|
"107": "厄瓜多爾",
|
||||||
"108": "秘魯近海",
|
"108": "秘魯北部近海",
|
||||||
"109": "秘魯沿岸",
|
"109": "秘魯北部沿岸",
|
||||||
"11": "布里斯托爾灣",
|
"11": "布里斯托爾灣",
|
||||||
"110": "秘魯—厄瓜多爾邊境",
|
"110": "秘魯—厄瓜多爾邊境",
|
||||||
"111": "秘魯北部",
|
"111": "秘魯北部",
|
||||||
"112": "秘魯—巴西邊境",
|
"112": "秘魯—巴西邊境",
|
||||||
"113": "巴西亞馬遜",
|
"113": "巴西亞馬遜",
|
||||||
"114": "秘魯中部近海",
|
"114": "秘魯近海",
|
||||||
"115": "秘魯中部沿岸",
|
"115": "秘魯沿岸",
|
||||||
"116": "秘魯中部",
|
"116": "秘魯中部",
|
||||||
"117": "秘魯南部",
|
"117": "秘魯南部",
|
||||||
"118": "秘魯—玻利維亞邊境",
|
"118": "秘魯—玻利維亞邊境",
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
"185": "溫納圖附近",
|
"185": "溫納圖附近",
|
||||||
"186": "溫納圖",
|
"186": "溫納圖",
|
||||||
"187": "新喀里多尼亞",
|
"187": "新喀里多尼亞",
|
||||||
"188": "新喀里多尼亞洛亞蒂群島",
|
"188": "洛亞蒂群島",
|
||||||
"189": "洛亞蒂群島東南",
|
"189": "洛亞蒂群島東南",
|
||||||
"19": "阿拉斯加東南部",
|
"19": "阿拉斯加東南部",
|
||||||
"190": "新愛爾蘭",
|
"190": "新愛爾蘭",
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
"304": "克什米爾—西藏邊境",
|
"304": "克什米爾—西藏邊境",
|
||||||
"305": "西藏西部—印度邊境",
|
"305": "西藏西部—印度邊境",
|
||||||
"306": "中國西藏",
|
"306": "中國西藏",
|
||||||
"307": "中國四川",
|
"307": "中國四川、重慶",
|
||||||
"308": "印度北部",
|
"308": "印度北部",
|
||||||
"309": "尼泊爾—印度邊境",
|
"309": "尼泊爾—印度邊境",
|
||||||
"31": "俄勒岡沿岸",
|
"31": "俄勒岡沿岸",
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
"320": "吉爾吉斯—新疆邊境",
|
"320": "吉爾吉斯—新疆邊境",
|
||||||
"321": "中國新疆南部",
|
"321": "中國新疆南部",
|
||||||
"322": "中國甘肅",
|
"322": "中國甘肅",
|
||||||
"323": "中國內蒙古西部",
|
"323": "中國內蒙古西部、寧夏",
|
||||||
"324": "克什米爾—新疆邊境",
|
"324": "克什米爾—新疆邊境",
|
||||||
"325": "中國青海",
|
"325": "中國青海",
|
||||||
"326": "西伯利亞西南部",
|
"326": "西伯利亞西南部",
|
||||||
@@ -297,7 +297,7 @@
|
|||||||
"363": "希臘—保加利亞邊境",
|
"363": "希臘—保加利亞邊境",
|
||||||
"364": "希臘",
|
"364": "希臘",
|
||||||
"365": "愛琴海",
|
"365": "愛琴海",
|
||||||
"366": "土耳其東部",
|
"366": "土耳其",
|
||||||
"367": "格魯吉亞—亞美尼亞—土耳其邊境",
|
"367": "格魯吉亞—亞美尼亞—土耳其邊境",
|
||||||
"368": "希臘南部",
|
"368": "希臘南部",
|
||||||
"369": "希臘佐澤卡尼索斯群島",
|
"369": "希臘佐澤卡尼索斯群島",
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
"371": "地中海東部",
|
"371": "地中海東部",
|
||||||
"372": "塞浦路斯",
|
"372": "塞浦路斯",
|
||||||
"373": "死海",
|
"373": "死海",
|
||||||
"374": "敘利亞",
|
"374": "約旦—敘利亞",
|
||||||
"375": "伊拉克",
|
"375": "伊拉克",
|
||||||
"376": "葡萄牙",
|
"376": "葡萄牙",
|
||||||
"377": "西班牙",
|
"377": "西班牙",
|
||||||
@@ -374,7 +374,7 @@
|
|||||||
"432": "克羅澤群島",
|
"432": "克羅澤群島",
|
||||||
"433": "凱爾蓋朗群島",
|
"433": "凱爾蓋朗群島",
|
||||||
"434": "斷裂海嶺",
|
"434": "斷裂海嶺",
|
||||||
"435": "印度洋洋中脊東南部",
|
"435": "印度洋東南海嶺",
|
||||||
"436": "凱爾蓋朗海台南部",
|
"436": "凱爾蓋朗海台南部",
|
||||||
"437": "澳大利亞以南",
|
"437": "澳大利亞以南",
|
||||||
"438": "沙斯卡寸旺省",
|
"438": "沙斯卡寸旺省",
|
||||||
@@ -385,18 +385,18 @@
|
|||||||
"442": "哈得遜海峽",
|
"442": "哈得遜海峽",
|
||||||
"443": "魁北克省北部",
|
"443": "魁北克省北部",
|
||||||
"444": "戴維斯海峽",
|
"444": "戴維斯海峽",
|
||||||
"445": "紐芬蘭與拉布拉多省拉布拉多",
|
"445": "拉布拉多",
|
||||||
"446": "拉布拉多海",
|
"446": "拉布拉多海",
|
||||||
"447": "魁北克省南部",
|
"447": "魁北克省南部",
|
||||||
"448": "魁北克省加斯佩半島",
|
"448": "加斯佩半島",
|
||||||
"449": "魁北克省東部",
|
"449": "魁北克省東部",
|
||||||
"45": "加利福尼亞—下加利福尼亞邊境",
|
"45": "加利福尼亞—下加利福尼亞邊境",
|
||||||
"450": "魁北克省安蒂科斯蒂島",
|
"450": "安蒂科斯蒂島",
|
||||||
"451": "新不倫瑞克省",
|
"451": "新不倫瑞克省",
|
||||||
"452": "新斯科舍省",
|
"452": "新斯科舍省",
|
||||||
"453": "愛德華王子島省",
|
"453": "愛德華王子島省",
|
||||||
"454": "聖勞倫斯灣",
|
"454": "聖勞倫斯灣",
|
||||||
"455": "紐芬蘭與拉布拉多省紐芬蘭",
|
"455": "紐芬蘭",
|
||||||
"456": "蒙大拿",
|
"456": "蒙大拿",
|
||||||
"457": "愛達荷東部",
|
"457": "愛達荷東部",
|
||||||
"458": "希伯根湖",
|
"458": "希伯根湖",
|
||||||
@@ -507,7 +507,7 @@
|
|||||||
"552": "利比亞",
|
"552": "利比亞",
|
||||||
"553": "埃及",
|
"553": "埃及",
|
||||||
"554": "紅海",
|
"554": "紅海",
|
||||||
"555": "沙特阿拉伯西部",
|
"555": "阿拉伯半島西部",
|
||||||
"556": "乍得",
|
"556": "乍得",
|
||||||
"557": "蘇丹",
|
"557": "蘇丹",
|
||||||
"558": "埃塞俄比亞",
|
"558": "埃塞俄比亞",
|
||||||
@@ -588,11 +588,11 @@
|
|||||||
"625": "托克勞",
|
"625": "托克勞",
|
||||||
"626": "庫克群島北部",
|
"626": "庫克群島北部",
|
||||||
"627": "庫克群島",
|
"627": "庫克群島",
|
||||||
"628": "法屬波利尼西亞社會群島",
|
"628": "社會群島",
|
||||||
"629": "法屬波利尼西亞土布艾群島",
|
"629": "土布艾群島",
|
||||||
"63": "墨西哥近海",
|
"63": "墨西哥近海",
|
||||||
"630": "法屬波利尼西亞馬克薩斯群島",
|
"630": "馬克薩斯群島",
|
||||||
"631": "法屬波利尼西亞土阿莫土群島",
|
"631": "土阿莫土群島",
|
||||||
"632": "南太平洋",
|
"632": "南太平洋",
|
||||||
"633": "羅蒙諾索夫海嶺",
|
"633": "羅蒙諾索夫海嶺",
|
||||||
"634": "北冰洋",
|
"634": "北冰洋",
|
||||||
@@ -600,7 +600,7 @@
|
|||||||
"636": "格陵蘭島東部",
|
"636": "格陵蘭島東部",
|
||||||
"637": "冰島附近",
|
"637": "冰島附近",
|
||||||
"638": "冰島",
|
"638": "冰島",
|
||||||
"639": "央麥恩島",
|
"639": "揚馬延島",
|
||||||
"64": "米卻肯近海",
|
"64": "米卻肯近海",
|
||||||
"640": "格陵蘭海",
|
"640": "格陵蘭海",
|
||||||
"641": "冷岸群島以北",
|
"641": "冷岸群島以北",
|
||||||
@@ -648,7 +648,7 @@
|
|||||||
"68": "恰帕斯近海",
|
"68": "恰帕斯近海",
|
||||||
"680": "格陵蘭島西部",
|
"680": "格陵蘭島西部",
|
||||||
"681": "巴芬灣",
|
"681": "巴芬灣",
|
||||||
"682": "努納武特巴芬島",
|
"682": "巴芬島",
|
||||||
"683": "太平洋中部東南部",
|
"683": "太平洋中部東南部",
|
||||||
"684": "東太平洋海隆南部",
|
"684": "東太平洋海隆南部",
|
||||||
"685": "復活節島",
|
"685": "復活節島",
|
||||||
@@ -678,7 +678,7 @@
|
|||||||
"706": "蘇門答臘北部",
|
"706": "蘇門答臘北部",
|
||||||
"707": "馬來西亞馬來半島",
|
"707": "馬來西亞馬來半島",
|
||||||
"708": "泰國灣",
|
"708": "泰國灣",
|
||||||
"709": "阿富汗中部",
|
"709": "阿富汗東南部",
|
||||||
"71": "危地馬拉沿岸",
|
"71": "危地馬拉沿岸",
|
||||||
"710": "巴基斯坦",
|
"710": "巴基斯坦",
|
||||||
"711": "克什米爾西南部",
|
"711": "克什米爾西南部",
|
||||||
@@ -769,8 +769,10 @@
|
|||||||
"KI": "基里巴斯",
|
"KI": "基里巴斯",
|
||||||
"MacroregionFormat": "{0}{1}",
|
"MacroregionFormat": "{0}{1}",
|
||||||
"MX": "墨西哥",
|
"MX": "墨西哥",
|
||||||
|
"NC": "新喀里多尼亞",
|
||||||
"NO": "挪威",
|
"NO": "挪威",
|
||||||
"NZ": "新西蘭",
|
"NZ": "新西蘭",
|
||||||
|
"PF": "法屬玻里尼西亞",
|
||||||
"PG": "巴布亞新畿內亞",
|
"PG": "巴布亞新畿內亞",
|
||||||
"PT": "葡萄牙",
|
"PT": "葡萄牙",
|
||||||
"RU": "俄羅斯",
|
"RU": "俄羅斯",
|
||||||
|
@@ -11,15 +11,15 @@
|
|||||||
"105": "厄瓜多沿岸",
|
"105": "厄瓜多沿岸",
|
||||||
"106": "哥倫比亞—厄瓜多邊境",
|
"106": "哥倫比亞—厄瓜多邊境",
|
||||||
"107": "厄瓜多",
|
"107": "厄瓜多",
|
||||||
"108": "秘魯近海",
|
"108": "秘魯北部近海",
|
||||||
"109": "秘魯沿岸",
|
"109": "秘魯北部沿岸",
|
||||||
"11": "布里斯托爾灣",
|
"11": "布里斯托爾灣",
|
||||||
"110": "秘魯—厄瓜多邊境",
|
"110": "秘魯—厄瓜多邊境",
|
||||||
"111": "秘魯北部",
|
"111": "秘魯北部",
|
||||||
"112": "秘魯—巴西邊境",
|
"112": "秘魯—巴西邊境",
|
||||||
"113": "巴西亞馬遜",
|
"113": "巴西亞馬遜",
|
||||||
"114": "秘魯中部近海",
|
"114": "秘魯近海",
|
||||||
"115": "秘魯中部沿岸",
|
"115": "秘魯沿岸",
|
||||||
"116": "秘魯中部",
|
"116": "秘魯中部",
|
||||||
"117": "秘魯南部",
|
"117": "秘魯南部",
|
||||||
"118": "秘魯—玻利維亞邊境",
|
"118": "秘魯—玻利維亞邊境",
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
"185": "萬那杜附近",
|
"185": "萬那杜附近",
|
||||||
"186": "萬那杜",
|
"186": "萬那杜",
|
||||||
"187": "新喀里多尼亞",
|
"187": "新喀里多尼亞",
|
||||||
"188": "新喀里多尼亞羅雅提群島",
|
"188": "羅雅提群島",
|
||||||
"189": "羅雅提群島東南",
|
"189": "羅雅提群島東南",
|
||||||
"19": "阿拉斯加東南部",
|
"19": "阿拉斯加東南部",
|
||||||
"190": "新愛爾蘭",
|
"190": "新愛爾蘭",
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
"304": "喀什米爾—西藏邊境",
|
"304": "喀什米爾—西藏邊境",
|
||||||
"305": "西藏西部—印度邊境",
|
"305": "西藏西部—印度邊境",
|
||||||
"306": "中國西藏",
|
"306": "中國西藏",
|
||||||
"307": "中國四川",
|
"307": "中國四川、重慶",
|
||||||
"308": "印度北部",
|
"308": "印度北部",
|
||||||
"309": "尼泊爾—印度邊境",
|
"309": "尼泊爾—印度邊境",
|
||||||
"31": "奧勒岡沿岸",
|
"31": "奧勒岡沿岸",
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
"320": "吉爾吉斯—新疆邊境",
|
"320": "吉爾吉斯—新疆邊境",
|
||||||
"321": "中國新疆南部",
|
"321": "中國新疆南部",
|
||||||
"322": "中國甘肅",
|
"322": "中國甘肅",
|
||||||
"323": "中國內蒙古西部",
|
"323": "中國內蒙古西部、寧夏",
|
||||||
"324": "喀什米爾—新疆邊境",
|
"324": "喀什米爾—新疆邊境",
|
||||||
"325": "中國青海",
|
"325": "中國青海",
|
||||||
"326": "西伯利亞西南部",
|
"326": "西伯利亞西南部",
|
||||||
@@ -297,7 +297,7 @@
|
|||||||
"363": "希臘—保加利亞邊境",
|
"363": "希臘—保加利亞邊境",
|
||||||
"364": "希臘",
|
"364": "希臘",
|
||||||
"365": "愛琴海",
|
"365": "愛琴海",
|
||||||
"366": "土耳其東部",
|
"366": "土耳其",
|
||||||
"367": "喬治亞—亞美尼亞—土耳其邊境",
|
"367": "喬治亞—亞美尼亞—土耳其邊境",
|
||||||
"368": "希臘南部",
|
"368": "希臘南部",
|
||||||
"369": "希臘佐澤卡尼索斯群島",
|
"369": "希臘佐澤卡尼索斯群島",
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
"371": "地中海東部",
|
"371": "地中海東部",
|
||||||
"372": "賽普勒斯",
|
"372": "賽普勒斯",
|
||||||
"373": "死海",
|
"373": "死海",
|
||||||
"374": "敘利亞",
|
"374": "約旦—敘利亞",
|
||||||
"375": "伊拉克",
|
"375": "伊拉克",
|
||||||
"376": "葡萄牙",
|
"376": "葡萄牙",
|
||||||
"377": "西班牙",
|
"377": "西班牙",
|
||||||
@@ -374,7 +374,7 @@
|
|||||||
"432": "克羅澤群島",
|
"432": "克羅澤群島",
|
||||||
"433": "凱爾蓋朗群島",
|
"433": "凱爾蓋朗群島",
|
||||||
"434": "斷裂海嶺",
|
"434": "斷裂海嶺",
|
||||||
"435": "印度洋洋中脊東南部",
|
"435": "印度洋東南海嶺",
|
||||||
"436": "凱爾蓋朗海台南部",
|
"436": "凱爾蓋朗海台南部",
|
||||||
"437": "澳大利亞以南",
|
"437": "澳大利亞以南",
|
||||||
"438": "薩克其萬省",
|
"438": "薩克其萬省",
|
||||||
@@ -385,18 +385,18 @@
|
|||||||
"442": "哈得遜海峽",
|
"442": "哈得遜海峽",
|
||||||
"443": "魁北克省北部",
|
"443": "魁北克省北部",
|
||||||
"444": "戴維斯海峽",
|
"444": "戴維斯海峽",
|
||||||
"445": "紐芬蘭與拉布拉多省拉布拉多",
|
"445": "拉布拉多",
|
||||||
"446": "拉布拉多海",
|
"446": "拉布拉多海",
|
||||||
"447": "魁北克省南部",
|
"447": "魁北克省南部",
|
||||||
"448": "魁北克省加斯佩半島",
|
"448": "加斯佩半島",
|
||||||
"449": "魁北克省東部",
|
"449": "魁北克省東部",
|
||||||
"45": "加利福尼亞—下加利福尼亞邊境",
|
"45": "加利福尼亞—下加利福尼亞邊境",
|
||||||
"450": "魁北克省安蒂科斯蒂島",
|
"450": "安蒂科斯蒂島",
|
||||||
"451": "新不倫瑞克省",
|
"451": "新不倫瑞克省",
|
||||||
"452": "新斯科舍省",
|
"452": "新斯科舍省",
|
||||||
"453": "愛德華王子島省",
|
"453": "愛德華王子島省",
|
||||||
"454": "聖勞倫斯灣",
|
"454": "聖勞倫斯灣",
|
||||||
"455": "紐芬蘭與拉布拉多省紐芬蘭",
|
"455": "紐芬蘭",
|
||||||
"456": "蒙大拿",
|
"456": "蒙大拿",
|
||||||
"457": "愛達荷東部",
|
"457": "愛達荷東部",
|
||||||
"458": "希伯根湖",
|
"458": "希伯根湖",
|
||||||
@@ -507,7 +507,7 @@
|
|||||||
"552": "利比亞",
|
"552": "利比亞",
|
||||||
"553": "埃及",
|
"553": "埃及",
|
||||||
"554": "紅海",
|
"554": "紅海",
|
||||||
"555": "沙烏地阿拉伯西部",
|
"555": "阿拉伯半島西部",
|
||||||
"556": "查德",
|
"556": "查德",
|
||||||
"557": "蘇丹",
|
"557": "蘇丹",
|
||||||
"558": "衣索比亞",
|
"558": "衣索比亞",
|
||||||
@@ -588,11 +588,11 @@
|
|||||||
"625": "托克勞",
|
"625": "托克勞",
|
||||||
"626": "庫克群島北部",
|
"626": "庫克群島北部",
|
||||||
"627": "庫克群島",
|
"627": "庫克群島",
|
||||||
"628": "法屬玻里尼西亞社會群島",
|
"628": "社會群島",
|
||||||
"629": "法屬玻里尼西亞土布艾群島",
|
"629": "土布艾群島",
|
||||||
"63": "墨西哥近海",
|
"63": "墨西哥近海",
|
||||||
"630": "法屬玻里尼西亞馬克薩斯群島",
|
"630": "馬克薩斯群島",
|
||||||
"631": "法屬玻里尼西亞土阿莫土群島",
|
"631": "土阿莫土群島",
|
||||||
"632": "南太平洋",
|
"632": "南太平洋",
|
||||||
"633": "羅蒙諾索夫海嶺",
|
"633": "羅蒙諾索夫海嶺",
|
||||||
"634": "北冰洋",
|
"634": "北冰洋",
|
||||||
@@ -600,7 +600,7 @@
|
|||||||
"636": "格陵蘭島東部",
|
"636": "格陵蘭島東部",
|
||||||
"637": "冰島附近",
|
"637": "冰島附近",
|
||||||
"638": "冰島",
|
"638": "冰島",
|
||||||
"639": "央麥恩島",
|
"639": "揚馬延島",
|
||||||
"64": "米卻肯近海",
|
"64": "米卻肯近海",
|
||||||
"640": "格陵蘭海",
|
"640": "格陵蘭海",
|
||||||
"641": "冷岸群島以北",
|
"641": "冷岸群島以北",
|
||||||
@@ -648,7 +648,7 @@
|
|||||||
"68": "恰帕斯近海",
|
"68": "恰帕斯近海",
|
||||||
"680": "格陵蘭島西部",
|
"680": "格陵蘭島西部",
|
||||||
"681": "巴芬灣",
|
"681": "巴芬灣",
|
||||||
"682": "努納武特巴芬島",
|
"682": "巴芬島",
|
||||||
"683": "太平洋中部東南部",
|
"683": "太平洋中部東南部",
|
||||||
"684": "東太平洋海隆南部",
|
"684": "東太平洋海隆南部",
|
||||||
"685": "復活節島",
|
"685": "復活節島",
|
||||||
@@ -678,7 +678,7 @@
|
|||||||
"706": "蘇門答臘北部",
|
"706": "蘇門答臘北部",
|
||||||
"707": "馬來西亞馬來半島",
|
"707": "馬來西亞馬來半島",
|
||||||
"708": "泰國灣",
|
"708": "泰國灣",
|
||||||
"709": "阿富汗中部",
|
"709": "阿富汗東南部",
|
||||||
"71": "瓜地馬拉沿岸",
|
"71": "瓜地馬拉沿岸",
|
||||||
"710": "巴基斯坦",
|
"710": "巴基斯坦",
|
||||||
"711": "喀什米爾西南部",
|
"711": "喀什米爾西南部",
|
||||||
@@ -769,8 +769,10 @@
|
|||||||
"KI": "吉里巴斯",
|
"KI": "吉里巴斯",
|
||||||
"MacroregionFormat": "{0}{1}",
|
"MacroregionFormat": "{0}{1}",
|
||||||
"MX": "墨西哥",
|
"MX": "墨西哥",
|
||||||
|
"NC": "新喀里多尼亞",
|
||||||
"NO": "挪威",
|
"NO": "挪威",
|
||||||
"NZ": "紐西蘭",
|
"NZ": "紐西蘭",
|
||||||
|
"PF": "法屬玻里尼西亞",
|
||||||
"PG": "巴布亞紐幾內亞",
|
"PG": "巴布亞紐幾內亞",
|
||||||
"PT": "葡萄牙",
|
"PT": "葡萄牙",
|
||||||
"RU": "俄羅斯",
|
"RU": "俄羅斯",
|
||||||
|
@@ -11,15 +11,15 @@
|
|||||||
"105": "厄瓜多尔沿岸",
|
"105": "厄瓜多尔沿岸",
|
||||||
"106": "哥伦比亚—厄瓜多尔边境",
|
"106": "哥伦比亚—厄瓜多尔边境",
|
||||||
"107": "厄瓜多尔",
|
"107": "厄瓜多尔",
|
||||||
"108": "秘鲁近海",
|
"108": "秘鲁北部近海",
|
||||||
"109": "秘鲁沿岸",
|
"109": "秘鲁北部沿岸",
|
||||||
"11": "布里斯托尔湾",
|
"11": "布里斯托尔湾",
|
||||||
"110": "秘鲁—厄瓜多尔边境",
|
"110": "秘鲁—厄瓜多尔边境",
|
||||||
"111": "秘鲁北部",
|
"111": "秘鲁北部",
|
||||||
"112": "秘鲁—巴西边境",
|
"112": "秘鲁—巴西边境",
|
||||||
"113": "巴西亚马孙",
|
"113": "巴西亚马孙",
|
||||||
"114": "秘鲁中部近海",
|
"114": "秘鲁近海",
|
||||||
"115": "秘鲁中部沿岸",
|
"115": "秘鲁沿岸",
|
||||||
"116": "秘鲁中部",
|
"116": "秘鲁中部",
|
||||||
"117": "秘鲁南部",
|
"117": "秘鲁南部",
|
||||||
"118": "秘鲁—玻利维亚边境",
|
"118": "秘鲁—玻利维亚边境",
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
"185": "瓦努阿图附近",
|
"185": "瓦努阿图附近",
|
||||||
"186": "瓦努阿图",
|
"186": "瓦努阿图",
|
||||||
"187": "新喀里多尼亚",
|
"187": "新喀里多尼亚",
|
||||||
"188": "新喀里多尼亚洛亚蒂群岛",
|
"188": "洛亚蒂群岛",
|
||||||
"189": "洛亚蒂群岛东南",
|
"189": "洛亚蒂群岛东南",
|
||||||
"19": "阿拉斯加东南部",
|
"19": "阿拉斯加东南部",
|
||||||
"190": "新爱尔兰",
|
"190": "新爱尔兰",
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
"304": "克什米尔—西藏边境",
|
"304": "克什米尔—西藏边境",
|
||||||
"305": "西藏西部—印度边境",
|
"305": "西藏西部—印度边境",
|
||||||
"306": "中国西藏",
|
"306": "中国西藏",
|
||||||
"307": "中国四川",
|
"307": "中国四川、重庆",
|
||||||
"308": "印度北部",
|
"308": "印度北部",
|
||||||
"309": "尼泊尔—印度边境",
|
"309": "尼泊尔—印度边境",
|
||||||
"31": "俄勒冈沿岸",
|
"31": "俄勒冈沿岸",
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
"320": "吉尔吉斯斯坦—新疆边境",
|
"320": "吉尔吉斯斯坦—新疆边境",
|
||||||
"321": "中国新疆南部",
|
"321": "中国新疆南部",
|
||||||
"322": "中国甘肃",
|
"322": "中国甘肃",
|
||||||
"323": "中国内蒙古西部",
|
"323": "中国内蒙古西部、宁夏",
|
||||||
"324": "克什米尔—新疆边境",
|
"324": "克什米尔—新疆边境",
|
||||||
"325": "中国青海",
|
"325": "中国青海",
|
||||||
"326": "西伯利亚西南部",
|
"326": "西伯利亚西南部",
|
||||||
@@ -297,7 +297,7 @@
|
|||||||
"363": "希腊—保加利亚边境",
|
"363": "希腊—保加利亚边境",
|
||||||
"364": "希腊",
|
"364": "希腊",
|
||||||
"365": "爱琴海",
|
"365": "爱琴海",
|
||||||
"366": "土耳其东部",
|
"366": "土耳其",
|
||||||
"367": "格鲁吉亚—亚美尼亚—土耳其边境",
|
"367": "格鲁吉亚—亚美尼亚—土耳其边境",
|
||||||
"368": "希腊南部",
|
"368": "希腊南部",
|
||||||
"369": "希腊佐泽卡尼索斯群岛",
|
"369": "希腊佐泽卡尼索斯群岛",
|
||||||
@@ -306,7 +306,7 @@
|
|||||||
"371": "地中海东部",
|
"371": "地中海东部",
|
||||||
"372": "塞浦路斯",
|
"372": "塞浦路斯",
|
||||||
"373": "死海",
|
"373": "死海",
|
||||||
"374": "叙利亚",
|
"374": "约旦—叙利亚",
|
||||||
"375": "伊拉克",
|
"375": "伊拉克",
|
||||||
"376": "葡萄牙",
|
"376": "葡萄牙",
|
||||||
"377": "西班牙",
|
"377": "西班牙",
|
||||||
@@ -374,7 +374,7 @@
|
|||||||
"432": "克罗泽群岛",
|
"432": "克罗泽群岛",
|
||||||
"433": "凯尔盖朗群岛",
|
"433": "凯尔盖朗群岛",
|
||||||
"434": "断裂海岭",
|
"434": "断裂海岭",
|
||||||
"435": "印度洋洋中脊东南部",
|
"435": "印度洋东南海岭",
|
||||||
"436": "凯尔盖朗海台南部",
|
"436": "凯尔盖朗海台南部",
|
||||||
"437": "澳大利亚以南",
|
"437": "澳大利亚以南",
|
||||||
"438": "萨斯喀彻温省",
|
"438": "萨斯喀彻温省",
|
||||||
@@ -385,18 +385,18 @@
|
|||||||
"442": "哈得孙海峡",
|
"442": "哈得孙海峡",
|
||||||
"443": "魁北克省北部",
|
"443": "魁北克省北部",
|
||||||
"444": "戴维斯海峡",
|
"444": "戴维斯海峡",
|
||||||
"445": "纽芬兰与拉布拉多省拉布拉多",
|
"445": "拉布拉多",
|
||||||
"446": "拉布拉多海",
|
"446": "拉布拉多海",
|
||||||
"447": "魁北克省南部",
|
"447": "魁北克省南部",
|
||||||
"448": "魁北克省加斯佩半岛",
|
"448": "加斯佩半岛",
|
||||||
"449": "魁北克省东部",
|
"449": "魁北克省东部",
|
||||||
"45": "加利福尼亚—下加利福尼亚边境",
|
"45": "加利福尼亚—下加利福尼亚边境",
|
||||||
"450": "魁北克省安蒂科斯蒂岛",
|
"450": "安蒂科斯蒂岛",
|
||||||
"451": "新不伦瑞克省",
|
"451": "新不伦瑞克省",
|
||||||
"452": "新斯科舍省",
|
"452": "新斯科舍省",
|
||||||
"453": "爱德华王子岛省",
|
"453": "爱德华王子岛省",
|
||||||
"454": "圣劳伦斯湾",
|
"454": "圣劳伦斯湾",
|
||||||
"455": "纽芬兰与拉布拉多省纽芬兰",
|
"455": "纽芬兰",
|
||||||
"456": "蒙大拿",
|
"456": "蒙大拿",
|
||||||
"457": "爱达荷东部",
|
"457": "爱达荷东部",
|
||||||
"458": "希伯根湖",
|
"458": "希伯根湖",
|
||||||
@@ -507,7 +507,7 @@
|
|||||||
"552": "利比亚",
|
"552": "利比亚",
|
||||||
"553": "埃及",
|
"553": "埃及",
|
||||||
"554": "红海",
|
"554": "红海",
|
||||||
"555": "沙特阿拉伯西部",
|
"555": "阿拉伯半岛西部",
|
||||||
"556": "乍得",
|
"556": "乍得",
|
||||||
"557": "苏丹",
|
"557": "苏丹",
|
||||||
"558": "埃塞俄比亚",
|
"558": "埃塞俄比亚",
|
||||||
@@ -588,11 +588,11 @@
|
|||||||
"625": "托克劳",
|
"625": "托克劳",
|
||||||
"626": "库克群岛北部",
|
"626": "库克群岛北部",
|
||||||
"627": "库克群岛",
|
"627": "库克群岛",
|
||||||
"628": "法属波利尼西亚社会群岛",
|
"628": "社会群岛",
|
||||||
"629": "法属波利尼西亚土布艾群岛",
|
"629": "土布艾群岛",
|
||||||
"63": "墨西哥近海",
|
"63": "墨西哥近海",
|
||||||
"630": "法属波利尼西亚马克萨斯群岛",
|
"630": "马克萨斯群岛",
|
||||||
"631": "法属波利尼西亚土阿莫土群岛",
|
"631": "土阿莫土群岛",
|
||||||
"632": "南太平洋",
|
"632": "南太平洋",
|
||||||
"633": "罗蒙诺索夫海岭",
|
"633": "罗蒙诺索夫海岭",
|
||||||
"634": "北冰洋",
|
"634": "北冰洋",
|
||||||
@@ -600,7 +600,7 @@
|
|||||||
"636": "格陵兰岛东部",
|
"636": "格陵兰岛东部",
|
||||||
"637": "冰岛附近",
|
"637": "冰岛附近",
|
||||||
"638": "冰岛",
|
"638": "冰岛",
|
||||||
"639": "央麦恩岛",
|
"639": "扬马延岛",
|
||||||
"64": "米却肯近海",
|
"64": "米却肯近海",
|
||||||
"640": "格陵兰海",
|
"640": "格陵兰海",
|
||||||
"641": "斯瓦尔巴群岛以北",
|
"641": "斯瓦尔巴群岛以北",
|
||||||
@@ -648,7 +648,7 @@
|
|||||||
"68": "恰帕斯近海",
|
"68": "恰帕斯近海",
|
||||||
"680": "格陵兰岛西部",
|
"680": "格陵兰岛西部",
|
||||||
"681": "巴芬湾",
|
"681": "巴芬湾",
|
||||||
"682": "努纳武特巴芬岛",
|
"682": "巴芬岛",
|
||||||
"683": "太平洋中部东南部",
|
"683": "太平洋中部东南部",
|
||||||
"684": "东太平洋海隆南部",
|
"684": "东太平洋海隆南部",
|
||||||
"685": "复活节岛",
|
"685": "复活节岛",
|
||||||
@@ -678,7 +678,7 @@
|
|||||||
"706": "苏门答腊北部",
|
"706": "苏门答腊北部",
|
||||||
"707": "马来西亚马来半岛",
|
"707": "马来西亚马来半岛",
|
||||||
"708": "泰国湾",
|
"708": "泰国湾",
|
||||||
"709": "阿富汗中部",
|
"709": "阿富汗东南部",
|
||||||
"71": "危地马拉沿岸",
|
"71": "危地马拉沿岸",
|
||||||
"710": "巴基斯坦",
|
"710": "巴基斯坦",
|
||||||
"711": "克什米尔西南部",
|
"711": "克什米尔西南部",
|
||||||
@@ -769,8 +769,10 @@
|
|||||||
"KI": "基里巴斯",
|
"KI": "基里巴斯",
|
||||||
"MacroregionFormat": "{0}{1}",
|
"MacroregionFormat": "{0}{1}",
|
||||||
"MX": "墨西哥",
|
"MX": "墨西哥",
|
||||||
|
"NC": "新喀里多尼亚",
|
||||||
"NO": "挪威",
|
"NO": "挪威",
|
||||||
"NZ": "新西兰",
|
"NZ": "新西兰",
|
||||||
|
"PF": "法属波利尼西亚",
|
||||||
"PG": "巴布亚新几内亚",
|
"PG": "巴布亚新几内亚",
|
||||||
"PT": "葡萄牙",
|
"PT": "葡萄牙",
|
||||||
"RU": "俄罗斯",
|
"RU": "俄罗斯",
|
||||||
|
@@ -1,6 +1,28 @@
|
|||||||
{
|
{
|
||||||
"Culture": "en-US",
|
"Culture": "en-US",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "GlobalQuakeServer"
|
"AuthorityName": "GlobalQuake",
|
||||||
|
"PropertyDepth": "Depth",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyQuality": "Quality",
|
||||||
|
"SourceName": "GlobalQuakeServer",
|
||||||
|
"Title": "Detected",
|
||||||
|
"TitleArchived": "Archived",
|
||||||
|
"TitleCanceled": "Canceled"
|
||||||
|
},
|
||||||
|
"StringSets": {
|
||||||
|
"PropertyQualityValue": {
|
||||||
|
"Strings": {
|
||||||
|
"S": "S",
|
||||||
|
"A": "A",
|
||||||
|
"B": "B",
|
||||||
|
"C": "C",
|
||||||
|
"D": "D",
|
||||||
|
"E": "E",
|
||||||
|
"F": "F",
|
||||||
|
"?": "?"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,28 @@
|
|||||||
{
|
{
|
||||||
"Culture": "yue-HK",
|
"Culture": "yue-HK",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "GlobalQuakeServer"
|
"AuthorityName": "GlobalQuake",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyQuality": "品質",
|
||||||
|
"SourceName": "GlobalQuakeServer",
|
||||||
|
"Title": "檢出",
|
||||||
|
"TitleArchived": "歸檔",
|
||||||
|
"TitleCanceled": "取消"
|
||||||
|
},
|
||||||
|
"StringSets": {
|
||||||
|
"PropertyQualityValue": {
|
||||||
|
"Strings": {
|
||||||
|
"S": "S",
|
||||||
|
"A": "A",
|
||||||
|
"B": "B",
|
||||||
|
"C": "C",
|
||||||
|
"D": "D",
|
||||||
|
"E": "E",
|
||||||
|
"F": "F",
|
||||||
|
"?": "?"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,28 @@
|
|||||||
{
|
{
|
||||||
"Culture": "zh-TW",
|
"Culture": "zh-TW",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "GlobalQuakeServer"
|
"AuthorityName": "GlobalQuake",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyQuality": "品質",
|
||||||
|
"SourceName": "GlobalQuakeServer",
|
||||||
|
"Title": "檢出",
|
||||||
|
"TitleArchived": "歸檔",
|
||||||
|
"TitleCanceled": "取消"
|
||||||
|
},
|
||||||
|
"StringSets": {
|
||||||
|
"PropertyQualityValue": {
|
||||||
|
"Strings": {
|
||||||
|
"S": "S",
|
||||||
|
"A": "A",
|
||||||
|
"B": "B",
|
||||||
|
"C": "C",
|
||||||
|
"D": "D",
|
||||||
|
"E": "E",
|
||||||
|
"F": "F",
|
||||||
|
"?": "?"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,6 +1,28 @@
|
|||||||
{
|
{
|
||||||
"Culture": "zh-CN",
|
"Culture": "zh-CN",
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"SourceName": "GlobalQuakeServer"
|
"AuthorityName": "GlobalQuake",
|
||||||
|
"PropertyDepth": "深度",
|
||||||
|
"PropertyDepthValue": "{0}km",
|
||||||
|
"PropertyMagnitude": "M",
|
||||||
|
"PropertyQuality": "质量",
|
||||||
|
"SourceName": "GlobalQuakeServer",
|
||||||
|
"Title": "检出",
|
||||||
|
"TitleArchived": "归档",
|
||||||
|
"TitleCanceled": "取消"
|
||||||
|
},
|
||||||
|
"StringSets": {
|
||||||
|
"PropertyQualityValue": {
|
||||||
|
"Strings": {
|
||||||
|
"S": "S",
|
||||||
|
"A": "A",
|
||||||
|
"B": "B",
|
||||||
|
"C": "C",
|
||||||
|
"D": "D",
|
||||||
|
"E": "E",
|
||||||
|
"F": "F",
|
||||||
|
"?": "?"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -106,7 +106,7 @@
|
|||||||
"0226": "There is a possibility of a destructive local tsunami near the epicenter.",
|
"0226": "There is a possibility of a destructive local tsunami near the epicenter.",
|
||||||
"0227": "Minor local tsunami may occur near the epicenter, but no tsunami damage is expected.",
|
"0227": "Minor local tsunami may occur near the epicenter, but no tsunami damage is expected.",
|
||||||
"0228": "A shallow earthquake with the same magnitude in a sea area may generate a tsunami.",
|
"0228": "A shallow earthquake with the same magnitude in a sea area may generate a tsunami.",
|
||||||
"0229": "The possibility of tsunami generation toward Japan in currently under evaluation.",
|
"0229": "The possibility of tsunami generation toward Japan is currently under evaluation.",
|
||||||
"0230": "This earthquake poses no tsunami risk to Japan.",
|
"0230": "This earthquake poses no tsunami risk to Japan.",
|
||||||
"0241": "Earthquake Early Warning is in effect for this earthquake.",
|
"0241": "Earthquake Early Warning is in effect for this earthquake.",
|
||||||
"0242": "Earthquake Early Warning is in effect for this earthquake. Its maximum seismic intensity was 2.",
|
"0242": "Earthquake Early Warning is in effect for this earthquake. Its maximum seismic intensity was 2.",
|
||||||
@@ -160,12 +160,12 @@
|
|||||||
"Status": {
|
"Status": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"訓練": "This report is for drilling.",
|
"訓練": "This report is for drilling.",
|
||||||
"試験": "This report is for experiment."
|
"試験": "This report is for testing."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Title": {
|
"Title": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"": "report",
|
"": "Information",
|
||||||
"北海道・三陸沖後発地震注意情報": "Hokkaido and off-Sanriku aftershock notice",
|
"北海道・三陸沖後発地震注意情報": "Hokkaido and off-Sanriku aftershock notice",
|
||||||
"南海トラフ地震に関連する情報": "Information related to Nankai Trough earthquake",
|
"南海トラフ地震に関連する情報": "Information related to Nankai Trough earthquake",
|
||||||
"噴火に関する火山観測報": "Volcano observation information about eruption",
|
"噴火に関する火山観測報": "Volcano observation information about eruption",
|
||||||
|
@@ -118,7 +118,7 @@
|
|||||||
},
|
},
|
||||||
"EarthquakeMagnitudeUnknown": {
|
"EarthquakeMagnitudeUnknown": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"": "地震嘅規模不明。",
|
"": "地震嘅震級不明。",
|
||||||
"M8を超える巨大地震": "推定呢次地震係震級大於8嘅巨大地震。"
|
"M8を超える巨大地震": "推定呢次地震係震級大於8嘅巨大地震。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -131,7 +131,7 @@
|
|||||||
},
|
},
|
||||||
"NankaiTroughInfo": {
|
"NankaiTroughInfo": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"111": "南海海槽地震嘅監視區域內發生咗規模6.8或以上嘅地震。\n氣象廳已經開始調查呢次發生嘅地震與南海海槽地震嘅關聯性,並舉辦關於沿南海海槽地震嘅評估檢討會。\n若位於南海海槽地震嘅預想受災地區,請根據各自嘅情況,採取行動保護自身安全。",
|
"111": "南海海槽地震嘅監視區域內發生咗震級6.8或以上嘅地震。\n氣象廳已經開始調查呢次發生嘅地震與南海海槽地震嘅關聯性,並舉辦關於沿南海海槽地震嘅評估檢討會。\n若位於南海海槽地震嘅預想受災地區,請根據各自嘅情況,採取行動保護自身安全。",
|
||||||
"112": "應變觀測點觀測到咗顯著嘅變化,且變化正在增大。\n氣象廳已經開始調查觀測到嘅現象與南海海槽地震嘅關聯性,並舉辦關於沿南海海槽地震嘅評估檢討會。\n若位於南海海槽地震嘅預想受災地區,請注意後續嘅資訊。",
|
"112": "應變觀測點觀測到咗顯著嘅變化,且變化正在增大。\n氣象廳已經開始調查觀測到嘅現象與南海海槽地震嘅關聯性,並舉辦關於沿南海海槽地震嘅評估檢討會。\n若位於南海海槽地震嘅預想受災地區,請注意後續嘅資訊。",
|
||||||
"113": "觀測到咗可能表明預想震源域內嘅板塊邊界嘅固著狀態發生變化嘅現象。\n氣象廳已經開始調查觀測到嘅現象與南海海槽地震嘅關聯性,並舉辦關於沿南海海槽地震嘅評估檢討會。\n若位於南海海槽地震嘅預想受災地區,請注意後續嘅資訊。",
|
"113": "觀測到咗可能表明預想震源域內嘅板塊邊界嘅固著狀態發生變化嘅現象。\n氣象廳已經開始調查觀測到嘅現象與南海海槽地震嘅關聯性,並舉辦關於沿南海海槽地震嘅評估檢討會。\n若位於南海海槽地震嘅預想受災地區,請注意後續嘅資訊。",
|
||||||
"120": "氣象廳臨時舉辦咗關於沿南海海槽地震嘅評估檢討會。評估認為,由於本次地震嘅矩震級為8.0或以上,包括唔係呢次地震嘅震源域嘅區域在內,南海海槽地震嘅預想震源域內,大規模地震發生嘅可能性與平常相比相對較高。\n請根據政府同自治體等後續嘅呼籲等採取防災措施。\n氣象廳將繼續密切監視沿南海海槽地殼活動嘅推移。",
|
"120": "氣象廳臨時舉辦咗關於沿南海海槽地震嘅評估檢討會。評估認為,由於本次地震嘅矩震級為8.0或以上,包括唔係呢次地震嘅震源域嘅區域在內,南海海槽地震嘅預想震源域內,大規模地震發生嘅可能性與平常相比相對較高。\n請根據政府同自治體等後續嘅呼籲等採取防災措施。\n氣象廳將繼續密切監視沿南海海槽地殼活動嘅推移。",
|
||||||
@@ -160,12 +160,12 @@
|
|||||||
"Status": {
|
"Status": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"訓練": "呢報係訓練報。",
|
"訓練": "呢報係訓練報。",
|
||||||
"試験": "呢報係試驗報。"
|
"試験": "呢報係測試報。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Title": {
|
"Title": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"": "電文",
|
"": "資訊",
|
||||||
"北海道・三陸沖後発地震注意情報": "北海道、三陸外海餘震注意資訊",
|
"北海道・三陸沖後発地震注意情報": "北海道、三陸外海餘震注意資訊",
|
||||||
"南海トラフ地震に関連する情報": "關於南海海槽地震嘅資訊",
|
"南海トラフ地震に関連する情報": "關於南海海槽地震嘅資訊",
|
||||||
"噴火に関する火山観測報": "關於火山噴發嘅火山觀測報",
|
"噴火に関する火山観測報": "關於火山噴發嘅火山觀測報",
|
||||||
@@ -227,7 +227,7 @@
|
|||||||
"32": "海上警報(火山噴發警報解除)",
|
"32": "海上警報(火山噴發警報解除)",
|
||||||
"33": "海上預報(火山噴發預報)",
|
"33": "海上預報(火山噴發預報)",
|
||||||
"35": "活火山留意(海底火山)",
|
"35": "活火山留意(海底火山)",
|
||||||
"36": "週邊海域警戒",
|
"36": "周邊海域警戒",
|
||||||
"51": "爆發",
|
"51": "爆發",
|
||||||
"52": "噴發",
|
"52": "噴發",
|
||||||
"53": "開始噴發",
|
"53": "開始噴發",
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
"EarthquakeHypocenterDepth": "震源深度約{0}公里。",
|
"EarthquakeHypocenterDepth": "震源深度約{0}公里。",
|
||||||
"EarthquakeHypocenterDepth0": "震源深度為極淺。",
|
"EarthquakeHypocenterDepth0": "震源深度為極淺。",
|
||||||
"EarthquakeHypocenterDepthUnknown": "震源深度不明。",
|
"EarthquakeHypocenterDepthUnknown": "震源深度不明。",
|
||||||
"EarthquakeMagnitude": "表示地震規模的震級推定為{0:F1}級。",
|
"EarthquakeMagnitude": "地震的規模推定為{0:F1}級。",
|
||||||
"EarthquakeMultiple": "本資訊是由於多次地震而發表的。",
|
"EarthquakeMultiple": "本資訊是由於多次地震而發表的。",
|
||||||
"EarthquakeMultipleIndex": "地震{0}",
|
"EarthquakeMultipleIndex": "地震{0}",
|
||||||
"HeadlineAshDetailed": "此次{0}噴發,降灰等情況的詳細預報如下。",
|
"HeadlineAshDetailed": "此次{0}噴發,降灰等情況的詳細預報如下。",
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
"EarthquakeMagnitudeUnknown": {
|
"EarthquakeMagnitudeUnknown": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"": "地震的規模不明。",
|
"": "地震的規模不明。",
|
||||||
"M8を超える巨大地震": "推定本次地震為震級大於8的巨大地震"
|
"M8を超える巨大地震": "推定本次地震為規模大於8的巨大地震"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"HeadlineVolcanoWarning": {
|
"HeadlineVolcanoWarning": {
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
"111": "南海海槽地震的監視區域內發生了規模6.8或以上的地震。\n氣象廳已經開始調查本次發生的地震與南海海槽地震的關聯性,並舉辦關於沿南海海槽地震的評估檢討會。\n若位於南海海槽地震的預想受災地區,請根據各自的情況,採取行動保護自身安全。",
|
"111": "南海海槽地震的監視區域內發生了規模6.8或以上的地震。\n氣象廳已經開始調查本次發生的地震與南海海槽地震的關聯性,並舉辦關於沿南海海槽地震的評估檢討會。\n若位於南海海槽地震的預想受災地區,請根據各自的情況,採取行動保護自身安全。",
|
||||||
"112": "應變觀測點觀測到了顯著的變化,且變化正在增大。\n氣象廳已經開始調查觀測到的現象與南海海槽地震的關聯性,並舉辦關於沿南海海槽地震的評估檢討會。\n若位於南海海槽地震的預想受災地區,請注意後續的資訊。",
|
"112": "應變觀測點觀測到了顯著的變化,且變化正在增大。\n氣象廳已經開始調查觀測到的現象與南海海槽地震的關聯性,並舉辦關於沿南海海槽地震的評估檢討會。\n若位於南海海槽地震的預想受災地區,請注意後續的資訊。",
|
||||||
"113": "觀測到了可能表明預想震源域內的板塊邊界的固著狀態發生變化的現象。\n氣象廳已經開始調查觀測到的現象與南海海槽地震的關聯性,並舉辦關於沿南海海槽地震的評估檢討會。\n若位於南海海槽地震的預想受災地區,請注意後續的資訊。",
|
"113": "觀測到了可能表明預想震源域內的板塊邊界的固著狀態發生變化的現象。\n氣象廳已經開始調查觀測到的現象與南海海槽地震的關聯性,並舉辦關於沿南海海槽地震的評估檢討會。\n若位於南海海槽地震的預想受災地區,請注意後續的資訊。",
|
||||||
"120": "氣象廳臨時舉辦了關於沿南海海槽地震的評估檢討會。評估認為,由於本次地震的矩震級為8.0或以上,包括不是本次地震的震源域的區域在內,南海海槽地震的預想震源域內,大規模地震發生的可能性與平常相比相對較高。\n請根據政府和自治體等後續的呼籲等採取防災措施。\n氣象廳將繼續密切監視沿南海海槽地殼活動的推移。",
|
"120": "氣象廳臨時舉辦了關於沿南海海槽地震的評估檢討會。評估認為,由於本次地震的地震矩規模為8.0或以上,包括不是本次地震的震源域的區域在內,南海海槽地震的預想震源域內,大規模地震發生的可能性與平常相比相對較高。\n請根據政府和自治體等後續的呼籲等採取防災措施。\n氣象廳將繼續密切監視沿南海海槽地殼活動的推移。",
|
||||||
"130": "氣象廳臨時舉辦了關於沿南海海槽地震的評估檢討會。評估認為,南海海槽地震的預想震源域內,大規模地震發生的可能性與平常相比相對較高。\n請根據政府和自治體等後續的呼籲等採取防災措施。\n氣象廳將繼續密切監視沿南海海槽地殼活動的推移。",
|
"130": "氣象廳臨時舉辦了關於沿南海海槽地震的評估檢討會。評估認為,南海海槽地震的預想震源域內,大規模地震發生的可能性與平常相比相對較高。\n請根據政府和自治體等後續的呼籲等採取防災措施。\n氣象廳將繼續密切監視沿南海海槽地殼活動的推移。",
|
||||||
"190": "氣象廳臨時舉辦了關於沿南海海槽地震的評估檢討會。評估認為,沒有觀測到能夠表明沿南海海槽的大規模地震發生的可能性與平常相比相對較高的變化。\n氣象廳將繼續密切監視沿南海海槽地殼活動的推移。",
|
"190": "氣象廳臨時舉辦了關於沿南海海槽地震的評估檢討會。評估認為,沒有觀測到能夠表明沿南海海槽的大規模地震發生的可能性與平常相比相對較高的變化。\n氣象廳將繼續密切監視沿南海海槽地殼活動的推移。",
|
||||||
"200": "氣象廳舉辦了關於沿南海海槽地震的評估檢討會。當前,沒有觀測到能夠表明沿南海海槽的大規模地震發生的可能性與平常相比相對較高的變化。",
|
"200": "氣象廳舉辦了關於沿南海海槽地震的評估檢討會。當前,沒有觀測到能夠表明沿南海海槽的大規模地震發生的可能性與平常相比相對較高的變化。",
|
||||||
@@ -160,12 +160,12 @@
|
|||||||
"Status": {
|
"Status": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"訓練": "本報為訓練報。",
|
"訓練": "本報為訓練報。",
|
||||||
"試験": "本報為試驗報。"
|
"試験": "本報為測試報。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Title": {
|
"Title": {
|
||||||
"Strings": {
|
"Strings": {
|
||||||
"": "電文",
|
"": "資訊",
|
||||||
"北海道・三陸沖後発地震注意情報": "北海道、三陸外海餘震注意資訊",
|
"北海道・三陸沖後発地震注意情報": "北海道、三陸外海餘震注意資訊",
|
||||||
"南海トラフ地震に関連する情報": "關於南海海槽地震的資訊",
|
"南海トラフ地震に関連する情報": "關於南海海槽地震的資訊",
|
||||||
"噴火に関する火山観測報": "關於火山噴發的火山觀測報",
|
"噴火に関する火山観測報": "關於火山噴發的火山觀測報",
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user