zoukankan      html  css  js  c++  java
  • ArcGIS时区设置——网络数据集

    ArcGIS更改时区

     

    https://desktop.arcgis.com/zh-cn/arcmap/latest/extensions/network-analyst/adding-time-zones-to-a-network-dataset.htm  向网络数据集添加时区

    网络数据集控制时区的方式

    时区相对于协调世界时间 (UTC) 会有一个时态偏移。当地规则指定了 UTC 偏移量;是否遵守夏令时;如果遵守,夏令时的偏移和日期范围。这些规则可能会经常变化;记住所有当前和过去的规则相当困难。幸运的是,Windows 操作系统的后续版本通过 Windows 更新可以为您的计算机提供世界上任意时区的变化,这样就解决了这个问题。时区和时区的规则存储在 Windows 注册表中。

    ArcGIS Network Analyst extension 会从 Windows 注册表中检索时区的 UTC 偏移和夏令时规则。下面的概念图表显示了它的基本工作原理。

    边源要素上的 TimeZoneID 字段可指示要素所在的时区。TimeZoneID 值是时区表的外键,时区表与网络数据集位于同一工作空间内,并存储了一个时区列表。时区表中的 MSTimeZone 字段也是一个外键,但它是 Windows 注册表中注册表项的外键。(将整数值视为标识符和外键更普遍;不过,注册表则使用文本来识别时区。) 注册表可向 Network Analyst 提供有关夏令时的 UTC 偏移和任意日期范围的信息。

     

    网络数据集中时区的概念性综述在此逻辑示意图中,TimeZoneID 值为 2 的街道将突出显示,并与 TimeZones 表中的中部标准时间记录相关联。然后,MSTimeZone 值会在街道与注册表中 Central Standard Time 键之间建立关联关系。根据上述关联关系,Network Analyst 就可以确定这些街道从十一月至三月的 UTC 偏移为 -6 小时,从三月至十一月的 UTC 偏移则为 -5。

    如图所示,边源要素类上需要有时区表和 TimeZoneID 字段,才能在网络数据集中配置时区。完成这些设置后,即可创建时区网络属性。

    创建时区表

    可按照以下步骤手动创建时区表。对于以下这一序列步骤以及后续内容,假定您对 ArcGIS 中的表的创建和编辑都非常熟悉。

    1. 在网络数据集所在的工作空间中创建表文件,然后为其命名,例如 TimeZones。

       

      如果此工作空间是一个地理数据库,则即使网络数据集需要位于更深的级别(即要素数据集)中,也需要在地理数据库级别创建表文件。

    2. 向表文件中添加一个文本属性,并将其命名为 MSTimeZone。

       

      警告:

      文本属性的名称必须为 MSTimeZone,因为它是 Network Analyst 的关键字。

      属性的长度需要与您添加到表中的最长时区的名称相符。到 2010 年 3 月,Windows 注册表中的最长时区名称包含 61 个字符。

    3. 根据需要,可再添加一个文本字段来描述时区。

       

      有关添加此类描述性字段的好处的详细信息,请参阅下一步骤。

    4. 表文件创建后,您需要用时区名称填充 MSTimeZone 字段。

       

      按照以下步骤在 Windows 注册表中手动查找这些值。

      1. 打开注册表编辑器。

         

        在 Windows 7 或 Vista 中,单击开始,在开始搜索文本框中输入 regedit,然后按 Enter 键。

        在 Windows XP 中,单击开始 > 运行打开运行对话框。在打开文本框中输入 regedit,然后按 Enter 键。

      2. 注册表中的项与文件夹很相似。展开以下项:HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft >WindowsNT > CurrentVersion > Time Zones。

         

        一长列子项会出现在 Time Zones 项中。列表中的每个项表示一个时区。在新时区表的 MSTimeZone 属性下输入的值必须与这些项名称的拼写完全匹配,求解时 Network Analyst 才可以在注册表中查找到它们。

         

        警告:

        确保不对注册表进行任何更改,因为这可能会使系统崩溃。

        要复制名称,可单击某时区项,然后按 F2 进入编辑模式。按 Ctrl+C 可将名称复制到剪贴板。按 Esc 可退出编辑模式。(如果想要以后粘贴名称,请按 Ctrl+V。)

        注册表编辑器中选择某项后,它的值会出现在注册表编辑器窗口的其他窗格中。这些值组合在一起可描述时区,而且 Network Analyst 可使用这些值确定合适的时间。虽然 Network Analyst 不使用 Display 值,但也可以使用该信息来查看该时区与 UTC 的时态偏移,以及有关时区使用地点的一些地理信息。

      3. 在时区表中为每个要在网络数据集中使用的时区创建一条记录。对于每条记录的 MSTimeZone 字段,输入或粘贴注册表编辑器中对应的时区名称。

         

        例如,如果您的网络数据集包含连续的美国本土区域,则您的表中将包含五个 MSTimeZone 值,如下所示。(Display 字段可选。)

         

        ObjectIDMSTimeZone显示

        1

        东部标准时间

        (UTC-05:00)东部时间(美国和加拿大)

        2

        中部标准时间

        (UTC-06:00)中部时间(美国和加拿大)

        3

        山区标准时间

        (UTC-07:00)山地时间(美国和加拿大)

        4

        美国山区标准时间

        (UTC-07:00) 亚利桑那

        5

        太平洋标准时间

        (UTC-08:00)太平洋时间(美国和加拿大)

         

         

        提示:

        在此处添加 Display 字段是为了更好地描述 MSTimeZone 值。它所包含的信息是从注册表中时区项的 Display 值中复制而来。

        虽然 Network Analyst 不需要表中存在类似 Display 这样的字段,但是添加它可以使您和其他用户更加轻松地识别 MSTimeZone 表示的时区。例如,MSTimeZone 的“Mountain Standard Time”和“US Mountain Standard Time”值看起来非常相似。然而,从 Display 字段中,您可以看到亚利桑那时区表示为“US Mountain Standard Time”。(亚利桑那需要一个独立的时区标识符,因为与其他州的山地时间不同,它不遵守夏令时。)

    此时,您的表中就会包含一个名称为 MSTimeZone 的字段。下一步是在每个边源要素与表中的正确时区之间建立关联性。

    向边源添加 TimeZoneID 字段

    每个边源要素需要与一个时区精确关联。

    1. 将名为 TimeZoneID 的整型字段添加到每个边源要素类中。虽然可以向此字段分配任意的名称,但仍建议使用 TimeZoneID。
    2. 计算边源要素的值。

       

      TimeZoneID 值是外键,它可在要素与您刚刚创建的时区表中的记录之间建立关联性。因此,在上例中,ObjectID 5 表示太平洋标准时间,该时区中的所有边源要素的 TimeZoneID 值都应为 5。如果太平洋标准时间恰巧具有不同的 ObjectID 值,则需要用该值填充 TimeZoneID。

    向网络数据集添加时区属性

    以下步骤说明了在网络数据集上创建时区网络属性的方法。该属性可在边源要素类和时区表二者的 TimeZoneID 字段之间建立关系。

    只要您在街道要素类上设有 TimeZoneID 字段并已正确配置时区表,新建网络数据集向导就将自动为您创建此属性。

    1. 网络数据集属性对话框或新建网络数据集向导的属性选项卡上,单击添加。

      打开添加新属性对话框。

    2. 输入属性的名称,例如 TimeZone。
    3. 使用类型列表中选择描述符。
    4. 数据类型列表中选择整型。

      “添加新属性”对话框

    5. 单击确定。

      属性将添加到属性列表。

    6. 在工作空间中,右键单击新属性,单击关联时区表,然后单击时区表的名称。

       

      选择时区表

      中心有 T 字样的绿色圆出现在属性名称的左侧,表明它是时区属性。

      时区属性符号
    7. 双击时区属性名称可打开赋值器对话框。
    8. 对于每个边源,设置字段赋值器以从源要素类中读取 TimeZoneID 值。

      在下例中,从“街道”源要素类的 TimeZoneID 字段中读取值的字段赋值器将被分配“自-至”和“至-自”两个方向。

      “赋值器”对话框
    9. 单击确定。

      赋值器对话框关闭。完成新建网络数据集向导或关闭网络数据集属性对话框之后,您可以构建网络数据集以添加新的时区字段。

    跨越多个时区执行网络分析

    如果网络位置有时间窗,您所输入的时间值为指定的本地时区,即网络位置的基础边要素的时区。

    注:

    对于最初与网络上的位置可能不相关联的对象,要区别处理车辆配送的时间窗。

    • 某个 VRP 路径起始所在的时间窗可通过 EarliestStartTime 和 LatestStartTime 属性来指定。这些属性值的时区取自路径的起始站点所处的边。
    • 中断包含一个时间窗口,您可通过 TimeWindowStart 和 TimeWindowEnd 来指定该时间窗口。中断与路径相关联,且时区取自路径的起始站点所处的边。
  • 相关阅读:
    .netcore返回HellowWorld四种方式(管道配置,管道扩展方法,中间件,IStartupFilter 使用中间件的升级扩展)
    Mysql分页大数据量查询优化
    swagger发布本地的调试的时候没事,发布服务器提示500 : {"Message":"出现错误。"}
    DBeaver的使用(impala和数据库)
    mysql远程连接问题
    java+thymeleaf-layout-dialect+thymeleaf的使用
    springboot+thyemeleaf+swagger项目的创建和问题的解决
    ffmpeg实践
    Camera.main
    python双曲线拟合
  • 原文地址:https://www.cnblogs.com/2008nmj/p/13848056.html
Copyright © 2011-2022 走看看