{"action":"created","comment":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/comments/186532643","pull_request_review_id":118128239,"id":186532643,"diff_hunk":"@@ -0,0 +1,426 @@\n+# 3DTILES_batch_table_hierarchy Extension\n+\n+## Contributors\n+\n+* Sean Lilley, [@lilleyse](https://github.com/lilleyse)\n+* Patrick Cozzi, [@pjcozzi](https://twitter.com/pjcozzi)\n+\n+## Contents\n+\n+* [Overview](#overview)\n+* [Motivation](#motivation)\n+* [Batch table JSON schema updates](#batch-table-json-schema-updates)\n+   * [3DTILES_batch_table_hierarchy](#3DTILES_batch_table_hierarchy)\n+* [Examples](#examples)\n+* [Styling](#styling)\n+* [Notes](#notes)\n+\n+## Overview\n+\n+The standard batch table is suitable for datasets composed of features with the same sets of properties. However, some datasets have more complex metadata structures such as feature types or feature hierarchies that are not easy to represent as parallel arrays of properties. The Batch Table Hierarchy extension provides more flexibility for these cases.\n+\n+## Motivation\n+\n+Consider a tile whose features fit into multiple categories that do not share the same properties. A parking lot tile may have three types of features: cars, lamp posts, and trees. With the standard batch table, this might look like the following:\n+\n+```json\n+{\n+    \"lampStrength\" : [10, 5, 7, 0, 0, 0, 0, 0],\n+    \"lampColor\" : [\"yellow\", \"white\", \"white\", \"\", \"\", \"\", \"\", \"\"],\n+    \"carType\" : [\"\", \"\", \"\", \"truck\", \"bus\", \"sedan\", \"\", \"\"],\n+    \"carColor\" : [\"\", \"\", \"\", \"green\", \"blue\", \"red\", \"\", \"\"],\n+    \"treeHeight\" : [0, 0, 0, 0, 0, 0, 10, 15],\n+    \"treeAge\" : [0, 0, 0, 0, 0, 0, 5, 8]\n+}\n+```\n+\n+In this example, several `\"\"` and `0` array values are stored so each array has the same number of elements.  A potential workaround is to store properties as JSON objects; however, this becomes bulky as the number of properties grows:\n+\n+```json\n+{\n+  \"info\" : [\n+    {\n+      \"lampStrength\" : 10,\n+      \"lampColor\" : \"yellow\"\n+    },\n+    {\n+      \"lampStrength\" : 5,\n+      \"lampColor\" : \"white\"\n+    },\n+    {\n+      \"lampStrength\" : 7,\n+      \"lampColor\" : \"white\"\n+    },\n+    {\n+      \"carType\" : \"truck\",\n+      \"carColor\" : \"green\"\n+    },\n+    {\n+      \"carType\" : \"bus\",\n+      \"carColor\" : \"blue\"\n+    },\n+    {\n+      \"carType\" : \"sedan\",\n+      \"carColor\" : \"red\"\n+    },\n+    {\n+      \"treeHeight\" : 10,\n+      \"treeAge\" : 5\n+    },\n+    {\n+      \"treeHeight\" : 15,\n+      \"treeAge\" : 8\n+    }\n+  ]\n+}\n+```\n+\n+Another limitation of the standard batch table is the difficulty in expressing metadata hierarchies. \n+For example, consider a tile that represents a city block. The block itself contains metadata, the individual buildings contain metadata, and the building walls contain metadata. A tree diagram of the hierarchy might look like this:\n+\n+- block\n+  - building\n+    - wall\n+    - wall\n+  - building\n+    - wall\n+    - wall\n+  - building\n+    - wall\n+    - wall\n+\n+\n+In order to select a wall and retrieve properties from its building, the wall metadata must also include building metadata. Essentially the three-level hierarchy must be flattened into each feature, resulting in a lot of duplicate entries.\n+\n+A standard batch table with two walls per building and three buildings per block might look like this:\n+\n+```json\n+{\n+    \"wall_color\" : [\"blue\", \"pink\", \"green\", \"lime\", \"black\", \"brown\"],\n+    \"wall_windows\" : [2, 4, 4, 2, 0, 3],\n+    \"building_name\" : [\"building_0\", \"building_0\", \"building_1\", \"building_1\", \"building_2\", \"building_2\"],\n+    \"building_id\" : [0, 0, 1, 1, 2, 2],\n+    \"building_address\" : [\"10 Main St\", \"10 Main St\", \"12 Main St\", \"12 Main St\", \"14 Main St\", \"14 Main St\"],\n+    \"block_lat_long\" : [[0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543], [0.12, 0.543]],\n+    \"block_district\" : [\"central\", \"central\", \"central\", \"central\", \"central\", \"central\"],\n+}\n+```\n+\n+Both these cases illustrate the benefit of supporting feature types and a feature hierarchy within the Batch Table.\n+\n+## Batch table JSON schema updates\n+\n+The standard batch table may be extended to include a `3DTILES_batch_table_hierarchy` object that defines a set of classes and a tree structure for class instances.\n+\n+Sample Batch Table:\n+\n+```json\n+{\n+  \"extensions\" : {\n+    \"3DTILES_batch_table_hierarchy\" : {\n+      \"classes\" : [\n+        {\n+          \"name\" : \"Wall\",\n+          \"length\" : 6,\n+          \"instances\" : {\n+            \"color\" : [\"white\", \"red\", \"yellow\", \"gray\", \"brown\", \"black\"],\n+          }\n+        },\n+        {\n+          \"name\" : \"Building\",\n+          \"length\" : 3,\n+          \"instances\" : {\n+            \"name\" : [\"unit29\", \"unit20\", \"unit93\"],\n+            \"address\" : [\"100 Main St\", \"102 Main St\", \"104 Main St\"]\n+          }\n+        },\n+        {\n+          \"name\" : \"Owner\",\n+          \"length\" : 3,\n+          \"instances\" : {\n+            \"type\" : [\"city\", \"resident\", \"commercial\"],\n+            \"id\" : [1120, 1250, 6445]\n+          }\n+        }\n+      ],\n+      \"instancesLength\" : 12,\n+      \"classIds\" : [0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2],\n+      \"parentCounts\" : [1, 3, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0],\n+      \"parentIds\" : [6, 6, 10, 11, 7, 11, 7, 8, 8, 10, 10, 9]\n+    }\n+  }\n+}\n+```\n+\n+### 3DTILES_batch_table_hierarchy\n+\n+`classes` is an array of objects, where each object contains the following properties:\n+* `name` - A string representing the name of the class\n+* `length` - The number of instances of the class\n+* `instances` - An object containing instance properties. Properties may be stored as an array of values or a reference to data in the binary body.\n+\n+`instancesLength` is the total number of instances. It is equal to the sum of the `length` properties of the classes.\n+\n+Note that this is different than a tile's `batchLength`, which is the total number of features. While all features are instances, not all instances are features; the hierarchy may contain instances that don't have a physical basis in the tile's geometry but still contribute to the metadata hierarchy.\n+\n+`classIds` is an array of integers of length `instancesLength`. Each value specifies the instances's class as an index in the `classes` array.\n+\n+> **Implementation Note**: The Batch Table Hierarchy does not directly provide an instances's index into its class's `instances` array. Instead the index can be inferred by the number of instances with the same `classId` that have appeared before it. An implementation may want to compute these indices at load time so that property access is as fast as possible.\n+\n+`parentCounts` is an array of integers of length `instancesLength`. Each value specifies the number of parents that instance has. If omitted, `parentCounts` is implicitly an array of length `instancesLength`, where all values are 1.\n+\n+`parentIds` is an array of integers whose length equals the sum of the values in `parentCounts`. Parent ids are placed sequentially by instance - instance 0's parent ids are followed by instance 1's parent ids. Each value specifies the instance's parent as an index into the `classIds` array.\n+\n+Cyclical hierarchies are not allowed. When an instance's `parentId` points to itself, then it has no parent. When `parentIds` is omitted, the instances do not have parents.\n+\n+A feature's `batchId` is used to access its `classId` and `parentCount`. Therefore, the values in the `classIds` and `parentCounts` arrays are initially ordered by `batchId` and followed by non-feature instances.\n+\n+The `parentCounts` and `parentIds` arrays form an instance hierarchy. A feature's properties include those defined by its own class and any properties from ancestor instances.\n+\n+In some cases multiple ancestors may share the same property name. This can occur if two ancestors are the same class or are different classes with the same property names. For example, if every class defined the property \"id\", then it would be an overloaded property. In such cases it is up to the implementation to decide which value to return.\n+\n+Finally, `classIds`, `parentCounts`, and `parentIds` may instead be references to data in the binary body. If omitted, `componentType` defaults to `UNSIGNED_SHORT`. `type` is implicitly `SCALAR`.\n+\n+```json\n+\"classIds\" : {\n+    \"byteOffset\" : 0,\n+    \"componentType\" : \"UNSIGNED_SHORT\"\n+};\n+```\n+\n+JSON schema definitions can be found in [3DTILES_batch_table_hierarchy.json](./schema/3DTILES_batch_table_hierarchy.json).\n+\n+## Examples\n+\n+### Feature classes\n+\n+Going back to the example of a parking lot with car, lamp post, and tree features, a Batch Table might look like this:\n+\n+```json\n+{\n+  \"extensions\" : {\n+    \"3DTILES_batch_table_hierarchy\" : {\n+      \"classes\" : [\n+        {\n+          \"name\" : \"Lamp\",\n+          \"length\" : 3,\n+          \"instances\" : {\n+            \"lampStrength\" : [10, 5, 7],\n+            \"lampColor\" : [\"yellow\", \"white\", \"white\"]\n+          }\n+        },\n+        {\n+          \"name\" : \"Car\",\n+          \"length\" : 3,\n+          \"instances\" : {\n+            \"carType\" : [\"truck\", \"bus\", \"sedan\"],\n+            \"carColor\" : [\"green\", \"blue\", \"red\"]\n+          }\n+        },\n+        {\n+          \"name\" : \"Tree\",\n+          \"length\" : 2,\n+          \"instances\" : {\n+            \"treeHeight\" : [10, 15],\n+            \"treeAge\" : [5, 8]\n+          }\n+        }\n+      ],\n+      \"instancesLength\" : 8,\n+      \"classIds\" : [0, 0, 0, 1, 1, 1, 2, 2]\n+    }\n+  }\n+}\n+```\n+\n+Since this example does not contain any sort of hierarchy, the `parentCounts` and `parentIds` are not included, and `instancesLength` just equals the tile's `batchLength`.\n+\n+A `classId` of 0 indicates a \"Lamp\" instance, 1 indicates a \"Car\" instance, and 2 indicates a \"Tree\" instance.\n+\n+A feature's `batchId` is used to access its class in the `classIds` array. Features with a `batchId` of 0, 1, 2 are \"Lamp\" instances, features with a `batchId` of 3, 4, 5 are \"Car\" instances, and features with `batchId` of 6 and 7 are \"Tree\" instances.\n+\n+The feature with `batchId = 5` is the third \"Car\" instance, and its properties are\n+\n+```\n+carType : \"sedan\"\n+carColor : \"red\"\n+```\n+\n+Batch Table Hierarchy, parking lot:\n+\n+![batch table hierarchy parking lot](figures/batch-table-hierarchy-parking-lot.png)","path":"extensions/3DTILES_batch_table_hierarchy/README.md","position":251,"original_position":251,"commit_id":"83f0144ef0f2540fdd63037bda70d63a22b46ce4","original_commit_id":"4615dcb0f972291d61038b7de67764afa7c5e617","user":{"login":"lilleyse","id":915398,"avatar_url":"https://avatars2.githubusercontent.com/u/915398?v=4","gravatar_id":"","url":"https://api.github.com/users/lilleyse","html_url":"https://github.com/lilleyse","followers_url":"https://api.github.com/users/lilleyse/followers","following_url":"https://api.github.com/users/lilleyse/following{/other_user}","gists_url":"https://api.github.com/users/lilleyse/gists{/gist_id}","starred_url":"https://api.github.com/users/lilleyse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lilleyse/subscriptions","organizations_url":"https://api.github.com/users/lilleyse/orgs","repos_url":"https://api.github.com/users/lilleyse/repos","events_url":"https://api.github.com/users/lilleyse/events{/privacy}","received_events_url":"https://api.github.com/users/lilleyse/received_events","type":"User","site_admin":false},"body":"Oh good catch about the pictures!\r\n\r\nThe json formatting is a little off on this picture. The other picture looks good.","created_at":"2018-05-07T20:02:21Z","updated_at":"2018-05-07T20:04:17Z","html_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/305#discussion_r186532643","pull_request_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/305","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/comments/186532643"},"html":{"href":"https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/305#discussion_r186532643"},"pull_request":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/305"}}},"pull_request":{"url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/305","id":185796709,"html_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/305","diff_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/305.diff","patch_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/305.patch","issue_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues/305","number":305,"state":"open","locked":false,"title":"Move Batch Table hierarchy to an extension","user":{"login":"ggetz","id":4439461,"avatar_url":"https://avatars3.githubusercontent.com/u/4439461?v=4","gravatar_id":"","url":"https://api.github.com/users/ggetz","html_url":"https://github.com/ggetz","followers_url":"https://api.github.com/users/ggetz/followers","following_url":"https://api.github.com/users/ggetz/following{/other_user}","gists_url":"https://api.github.com/users/ggetz/gists{/gist_id}","starred_url":"https://api.github.com/users/ggetz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ggetz/subscriptions","organizations_url":"https://api.github.com/users/ggetz/orgs","repos_url":"https://api.github.com/users/ggetz/repos","events_url":"https://api.github.com/users/ggetz/events{/privacy}","received_events_url":"https://api.github.com/users/ggetz/received_events","type":"User","site_admin":false},"body":"Fixes #303\r\n\r\n* Name - is `CESIUM_batch_table_hierarchy` the name of the extension we would like to use? Is this a vendor extension? What prefix should we use for core extensions otherwise?\r\n* Contributors - I copied the list of contributors from the Batch Table, is this list valid here?\r\n* Should the batch table JSON schema still contain an `additionalProprties` field? or is that covered by `extensions` and `extras` now?","created_at":"2018-05-03T18:14:19Z","updated_at":"2018-05-07T20:04:17Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3c4260890bcb2bf5728203714b098c61e63a5218","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/305/commits","review_comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/305/comments","review_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/comments{/number}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues/305/comments","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/statuses/83f0144ef0f2540fdd63037bda70d63a22b46ce4","head":{"label":"AnalyticalGraphicsInc:hierarchy-extension","ref":"hierarchy-extension","sha":"83f0144ef0f2540fdd63037bda70d63a22b46ce4","user":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars0.githubusercontent.com/u/1490220?v=4","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"repo":{"id":36929005,"name":"3d-tiles","full_name":"AnalyticalGraphicsInc/3d-tiles","owner":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars0.githubusercontent.com/u/1490220?v=4","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles","description":"Specification for streaming massive heterogeneous 3D geospatial datasets :earth_americas:","fork":false,"url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles","forks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/forks","keys_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/teams","hooks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/hooks","issue_events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues/events{/number}","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/events","assignees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/assignees{/user}","branches_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/branches{/branch}","tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/tags","blobs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/statuses/{sha}","languages_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/languages","stargazers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/stargazers","contributors_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/contributors","subscribers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/subscribers","subscription_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/subscription","commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/contents/{+path}","compare_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/merges","archive_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/downloads","issues_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues{/number}","pulls_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls{/number}","milestones_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/milestones{/number}","notifications_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/labels{/name}","releases_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/releases{/id}","deployments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/deployments","created_at":"2015-06-05T11:23:23Z","updated_at":"2018-05-07T03:38:29Z","pushed_at":"2018-05-07T20:04:15Z","git_url":"git://github.com/AnalyticalGraphicsInc/3d-tiles.git","ssh_url":"git@github.com:AnalyticalGraphicsInc/3d-tiles.git","clone_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles.git","svn_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles","homepage":"","size":15709,"stargazers_count":356,"watchers_count":356,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":119,"mirror_url":null,"archived":false,"open_issues_count":61,"license":null,"forks":119,"open_issues":61,"watchers":356,"default_branch":"master"}},"base":{"label":"AnalyticalGraphicsInc:tileset.json-edits","ref":"tileset.json-edits","sha":"469a8609508a7a64d684ced3f2c30b4152669d7c","user":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars0.githubusercontent.com/u/1490220?v=4","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"repo":{"id":36929005,"name":"3d-tiles","full_name":"AnalyticalGraphicsInc/3d-tiles","owner":{"login":"AnalyticalGraphicsInc","id":1490220,"avatar_url":"https://avatars0.githubusercontent.com/u/1490220?v=4","gravatar_id":"","url":"https://api.github.com/users/AnalyticalGraphicsInc","html_url":"https://github.com/AnalyticalGraphicsInc","followers_url":"https://api.github.com/users/AnalyticalGraphicsInc/followers","following_url":"https://api.github.com/users/AnalyticalGraphicsInc/following{/other_user}","gists_url":"https://api.github.com/users/AnalyticalGraphicsInc/gists{/gist_id}","starred_url":"https://api.github.com/users/AnalyticalGraphicsInc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AnalyticalGraphicsInc/subscriptions","organizations_url":"https://api.github.com/users/AnalyticalGraphicsInc/orgs","repos_url":"https://api.github.com/users/AnalyticalGraphicsInc/repos","events_url":"https://api.github.com/users/AnalyticalGraphicsInc/events{/privacy}","received_events_url":"https://api.github.com/users/AnalyticalGraphicsInc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles","description":"Specification for streaming massive heterogeneous 3D geospatial datasets :earth_americas:","fork":false,"url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles","forks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/forks","keys_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/keys{/key_id}","collaborators_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/teams","hooks_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/hooks","issue_events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues/events{/number}","events_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/events","assignees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/assignees{/user}","branches_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/branches{/branch}","tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/tags","blobs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/refs{/sha}","trees_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/trees{/sha}","statuses_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/statuses/{sha}","languages_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/languages","stargazers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/stargazers","contributors_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/contributors","subscribers_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/subscribers","subscription_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/subscription","commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/commits{/sha}","git_commits_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/git/commits{/sha}","comments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/comments{/number}","issue_comment_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues/comments{/number}","contents_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/contents/{+path}","compare_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/compare/{base}...{head}","merges_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/merges","archive_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/downloads","issues_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues{/number}","pulls_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls{/number}","milestones_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/milestones{/number}","notifications_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/labels{/name}","releases_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/releases{/id}","deployments_url":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/deployments","created_at":"2015-06-05T11:23:23Z","updated_at":"2018-05-07T03:38:29Z","pushed_at":"2018-05-07T20:04:15Z","git_url":"git://github.com/AnalyticalGraphicsInc/3d-tiles.git","ssh_url":"git@github.com:AnalyticalGraphicsInc/3d-tiles.git","clone_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles.git","svn_url":"https://github.com/AnalyticalGraphicsInc/3d-tiles","homepage":"","size":15709,"stargazers_count":356,"watchers_count":356,"language":null,"has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":119,"mirror_url":null,"archived":false,"open_issues_count":61,"license":null,"forks":119,"open_issues":61,"watchers":356,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/305"},"html":{"href":"https://github.com/AnalyticalGraphicsInc/3d-tiles/pull/305"},"issue":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues/305"},"comments":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/issues/305/comments"},"review_comments":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/305/comments"},"review_comment":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/pulls/305/commits"},"statuses":{"href":"https://api.github.com/repos/AnalyticalGraphicsInc/3d-tiles/statuses/83f0144ef0f2540fdd63037bda70d63a22b46ce4"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"lilleyse"}}