---
title: "Polygon Queries: Intelligence Across Space and Time"
description: "Use polygon queries to explore World events across space and time, map entities with Atlas, and focus satellite monitoring where and when it matters."
url: "https://nosible.com/blog/polygon-queries-geospatial-temporal-intelligence"
---

[NOSIBLE World](https://nosible.com/blog/tag/nosible-world)

[Information Retrieval](https://nosible.com/blog/tag/information-retrieval)

[Web Search](https://nosible.com/blog/tag/web-search)

# Polygon Queries: Intelligence Across Space and Time

[Stuart Reid](https://www.linkedin.com/in/stuartgordonreid/)

2026-10-16

8 min read

Copy as Markdown

![Dotted NOSIBLE map showing seven oil chokepoint polygons and 5,261 matching World events for September 2026.](https://nosible.com/images/2026/10/world-geography-chokepoints.png)

NOSIBLE is on a mission to know everything, all the time. To do that we're building the NOSIBLE intel stack. It comprises Firehose, Search, World, Atlas, and Risks. Each level of the stack offers a different capability:

| Product | Capability |
| --- | --- |
| **Firehose** | A low latency feed of maximally enriched content published to the worldwide web for continuous monitoring, research, analysis, and automated workflows. |
| **Search** | A search engine built to find high-quality, relevant, dated content published to the web, helping teams discover evidence and investigate emerging developments. |
| **World** | A backtest-friendly database of world events with vectors, entities, and ontologies for systematic research and building data-driven investment strategies. |
| **Atlas** | A point-in-time knowledge graph spanning over 7 million entities and 35 million facts, connecting companies, people, products, and places through evidence. |
| **Risks** | A quantitative risk engine built to turn situational awareness into priced, directional bets, supporting research, portfolio construction, and informed trading decisions. |

Another way to think of intelligence is through the lens of modalities. What modalities do we care about? We want to know, in real time, what happened, when, to whom, where it happened, and why it happened.

We're pretty good at what, when, and who right now. We're not good at where and why. So while building V2.0-preview we invested a lot more time into "where". Given some natural language, how do we translate that into a list of locations including continents, regions, countries, cities, latitudes, and longitudes?

In this blog post we're sharing two things. First, we're sharing a new endpoint that lets you query events by polygon. Second, we'll demonstrate how Atlas can be used to geocode text. We'll use the geography of the oil trade to connect the two.

## Querying events by polygon

We monitor five oil transit chokepoints identified by the [US Energy Information Administration](https://www.eia.gov/international/analysis/special-topics/World_Oil_Transit_Chokepoints): the Strait of Hormuz, the Strait of Malacca, the Suez Canal, the Danish Straits, and Bab el-Mandeb. These areas cross national borders.

These waterways span several countries. Country filters include large areas outside them, adding results that need further review. Drawing polygons around the straits, canals, and their approaches lets us focus the search on relevant areas.

The [World V2.0-preview polygon endpoint](https://docs.nosible.com/endpoints/v2.0-preview-world-polygon-events) accepts GeoJSON, a format for geographic boundaries. Use a `Polygon` for one area or a `MultiPolygon` for several. An event matches when any stored location falls inside.

This example uses seven polygons: one each for Hormuz, Malacca and its Singapore approaches, Suez, and Bab el-Mandeb, plus three for the Danish Straits. Those three cover Little Belt, Great Belt, and Øresund. We submit them as a `MultiPolygon`.

§02 WORLD / GEOGRAPHIC QUERY

5 CHOKEPOINTS · 7 POLYGONS · 5,261 EVENTS

![NOSIBLE](https://nosible.com/_next/static/media/nosible-logo.39buxxx71v20c.svg)

### Oil transit chokepoints

Select a chokepoint and month to inspect its polygons and matching events.

MONTH October 2025 November 2025 December 2025 January 2026 February 2026 March 2026 April 2026 May 2026 June 2026 July 2026 August 2026 September 2026

5,261 UNIQUE EVENTS

0 1 Hormuz 1,369

0 2 Malacca 3,340

0 3 Suez 88

0 4 Danish Straits 346

0 5 Bab el-Mandeb 143

01 · SELECTED

#### Strait of Hormuz

Strait and approaches between Iran and Oman

**1,369**

MATCHING EVENTS

September 2026

Monitoring polygon

Location inside

Outside

MONTHLY EVENTS

−424 VS PREVIOUS MONTH

0–

3,486

EVENTS

OCT 2025

SEP 2026

Markers show stored locations from the selected month’s matching events. Co-located coordinates are combined; a marker can represent several events.

[GEOJSON ↗](https://nosible.com/examples/world-geography/oil-chokepoints.geojson)

[API REQUEST ↗](https://nosible.com/examples/world-geography/oil-chokepoints-request.json)

View all seven polygon histories

OCT 2025–SEP 2026 ＋

### Monthly matching events

October 2025–September 2026. Select a bar to change the month and map.

#### Strait of Hormuz

**1,369**

September 2026

Scale: 0–

3,486

events

#### Malacca and Singapore approaches

**3,340**

September 2026

Scale: 0–

3,340

events

#### Suez Canal

**88**

September 2026

Scale: 0–

187

events

#### Little Belt

**13**

September 2026

Scale: 0–

44

events

#### Great Belt

**10**

September 2026

Scale: 0–

22

events

#### Øresund

**325**

September 2026

Scale: 0–

329

events

#### Bab el-Mandeb

**143**

September 2026

Scale: 0–

143

events

Each chart starts at zero and has its own vertical scale. Counts are unique within each polygon and calendar month. An event with locations in several polygons can appear in several charts.

World V2.0-preview archive, queried 16 October 2026. Any stored location can match; all event topics are included. Combined totals deduplicate events across polygons. Illustrative monitoring areas; Natural Earth basemap.

[MONTHLY CSV ↗](https://nosible.com/examples/world-geography/oil-chokepoints-monthly.csv)

[DATA + QUERY RECEIPTS ↗](https://nosible.com/examples/world-geography/oil-chokepoints-monthly.json)

[QUERY SCRIPT ↗](https://nosible.com/examples/world-geography/query-monthly-chokepoints.py)

The polygons include a buffer around each waterway because an event's stored coordinates may represent a nearby place, such as a port or city.

We queried each calendar month from October 2025 through September 2026, finding 5,261 unique events across the polygons in September. Use the month control to update the map and counts, and the monthly histories below to compare regional activity. Hormuz rises from 248 matching events in February 2026 to 3,486 in April; Bab el-Mandeb rises from 11 in June to 143 in September.

Charts count each event once per polygon per month, so an event can appear in several charts. The combined total deduplicates across all seven polygons; the Danish Straits total does the same across its three channels. These results include topics beyond oil and shipping. Use the returned descriptions, entities, and classifications to investigate the events that interest you.

### Seven polygons in one request

GeoJSON lists coordinates as `[longitude, latitude]`. A polygon uses a ring of coordinates, repeating the first coordinate at the end to close the boundary. A `MultiPolygon` combines several polygons into a single geometry.

We've included the [complete GeoJSON geometry](https://nosible.com/examples/world-geography/oil-chokepoints.geojson), a [named version of each polygon](https://nosible.com/examples/world-geography/oil-chokepoints-named.geojson), and the [Python script](https://nosible.com/examples/world-geography/build-oil-chokepoints.py). Download the geometry alongside this example:

PYTHON / EXAMPLE

Copy code

```
import json
import os
import requests

with open("oil-chokepoints.geojson") as file:
    chokepoints = json.load(file)

query = {
    "polygon": chokepoints,
    "from": "2026-09-01",
    "to": "2026-09-30",
    "order": "desc",
    "limit": 500,
    "view": "lite",
}

response = requests.post(
    "https://nosible.world/api/v2.0-preview/polygon/events",
    headers={"Authorization": f"Bearer {os.environ['NOSIBLE_API_KEY']}"},
    json=query,
    timeout=60,
)
response.raise_for_status()
page = response.json()

for event in page["events"]:
    print(event["event"]["date"], event["english"]["title"])
```

27 lines

The date range must fall within your API key's archive access. `limit` sets the page size, up to 500. If the response includes a `next_cursor`, send it with the same polygon and filters to retrieve the next page. Download the [request body](https://nosible.com/examples/world-geography/oil-chokepoints-request.json).

### Querying monthly totals

For monthly totals, query each month's date range with `limit=1` and read `total`, which counts all matches; `count` covers only the current page. Our [query script](https://nosible.com/examples/world-geography/query-monthly-chokepoints.py) makes nine requests per month: seven individual polygons, the combined Danish Straits, and all polygons together. Download the [named polygons](https://nosible.com/examples/world-geography/oil-chokepoints-named.geojson), [counts as CSV](https://nosible.com/examples/world-geography/oil-chokepoints-monthly.csv), or [JSON with query receipts](https://nosible.com/examples/world-geography/oil-chokepoints-monthly.json) for further analysis.

To build the map, we paged through each month's combined results and checked their coordinates against each polygon, independently reproducing all 84 monthly polygon counts. The [marker data](https://nosible.com/examples/world-geography/oil-chokepoints-markers.json) and [location query script](https://nosible.com/examples/world-geography/query-chokepoint-markers.py) are available too. The default `view="lite"` returns locations, descriptions, entities, tickers, classifications, and signals; `view="full"` adds evidence and provenance.

Queries combine archive results with published daily updates within the requested dates. We index stored event coordinates in one-degree cells, scan those intersecting the polygon's bounding box, apply exact point-in-polygon checks, then filter by date and language. Any stored location can match, including places mentioned in an event. A match therefore indicates geographic relevance but doesn't establish an exact incident position.

## Geocoding text with Atlas

How do we put events on the map? Large language models (LLMs) classify their geographic context. Atlas connects named entities to places, helping us identify additional locations even when the text does not name those places directly.

When a text names Singapore, we can resolve the name directly. When it names Jurong Port or Tuas Port, Atlas's relationships can help us infer Singapore from the port reference, even when Singapore isn't mentioned.

We used the same statistical technique in [our work on ticker mapping](https://nosible.com/blog/the-hidden-path-to-every-ticker), where we inferred listed companies from related entities. For geocoding, we score the relationships between entities and geographic places.

Atlas connects both ports to Singapore through `located_in` relationships. The September 26 snapshot records evidence for these connections on five and seven distinct days, respectively. Both associations have repeated support.

§03 ATLAS / GEOGRAPHIC ASSOCIATIONS

26 SEP 2026

![NOSIBLE](https://nosible.com/_next/static/media/nosible-logo.39buxxx71v20c.svg)

### Singapore in the Atlas graph

Select a highlighted entity to inspect its association with Singapore.

**22** ENTITIES

**108** RELATIONSHIPS

Selected walk

Stored Atlas relationship

Layout is schematic

SELECTED ATLAS FACT

**Jurong Port**

located_in

**Singapore**

5 distinct evidence days · 08 Feb 2022 – 01 Jul 2025

To Singapore

From Singapore

SELECTED LOCATION

#### Jurong Port

SPECIFICITY

**0.246**

`P(Singapore | Jurong Port)`

Mass reaching Singapore when the walk starts at Jurong Port.

COMPARE ENTITIES

RELATIVE SCALE

01 **Jurong Port** **0.246**

02 **Tuas Port** **0.108**

03 **Maritime & Port Authority** **0.105**

EVIDENCE DAYS 5 RESTART PROBABILITY 0.30 GRAPH SCORE 0.067

Selected relationships supported by evidence dated before 26 September 2026. Scores use the full Atlas graph and measure random-walk mass.

[Download graph data ↗](https://nosible.com/examples/world-geography/singapore-atlas-network.json)

We use two-way personalized PageRank to measure these associations: how strongly places connect to entities, and entities to places. An entity can relate to several places. We score its evidence for each place separately.

### Measuring geographic prominence

We start from the Atlas records representing a target place, such as a city. A random walk repeatedly follows relationships between connected records. Each step has a 0.30 probability of restarting at the target. Otherwise, relationships with evidence from more distinct days receive more weight when choosing the next step.

If many articles report the same relationship on the same day, that counts as one evidence day. Observing it again on another day adds to its weight.

We measure the share of the walk reaching an entity, written as *P(entity | place)*. This is forward mass. Higher values mean the entity is more prominent in the evidence-weighted relationships connected to the starting place in Atlas.

### Measuring geographic specificity

We also need *P(place | entity)*: the mass that would reach the place if we started the walk from the entity. We call this specificity.

Each relationship has equal evidence weights in both directions. This lets us calculate specificity from forward mass:

specificity = forward mass × strength(place) strength(entity)

Strength is the total evidence weight connected to a node. We sum it across records representing the same place. Dividing by the entity's strength accounts for its relationships with other places and entities.

These probabilities describe the random walk. They don't estimate the probability that an event occurred at a location. The reversibility used in this calculation is described by [Lofgren, Banerjee, and Goel](https://arxiv.org/abs/1507.08705).

In the Singapore snapshot, Jurong Port's specificity is approximately 0.246, versus Tuas Port's 0.108. Tuas Port has more forward mass, so it's more prominent in the walk from Singapore. Jurong Port has a stronger reverse association with Singapore.

### Combining specificity with prominence

To calculate prominence, we divide an entity's forward mass by the tenth-largest forward mass among retained links for that place, capped at one. The graph score is the square root of the product of specificity and prominence, capped at one:

prominence = min ( 1, forward mass tenth-largest retained forward mass )

graph score = min ( 1, specificity × prominence )

A low score on either measure reduces the combined score. We calculate scores during graph builds, then use the resulting rules to infer locations.

Before inferring a location, we check the supporting relationships, competing locations, where the entity appears in the text, and whether other entities support the same location. Released associations require evidence from at least three distinct days along their supporting paths. We can abstain when the evidence is insufficient.

We resolve place names using aliases, entity types, and administrative context. Graph inference adds candidates from related entities.

## Targeted monitoring

World events provide evidence for Atlas. Atlas's geographic associations help locate subsequent events. This connects more named entities to places and makes those locations available to geographic queries. Researchers can use these queries to monitor areas relevant to investments and portfolio exposure.

Geographic queries can help reduce satellite monitoring costs. Planned events provide both an area and a time window to watch. An announced military exercise, port closure, or refinery restart could guide imagery purchases, satellite observation requests, or analysis of existing imagery. Schedule checks before, during, and after the expected activity to focus spending and analyst attention on places where changes could affect your investment decisions.

Reuse the seven polygons for oil chokepoints, or supply GeoJSON boundaries for other areas. Event signals help prioritise where and when to collect or analyse imagery, directing spending and analyst attention towards locations that warrant closer observation before or during planned activity.

S3 delivery, local API, or web API.

## Start a free trial

Review the diligence documents, schema, sample data, and delivery options. Then start your trial.

[Start trial](https://nosible.com/start-trial)

[Review docs](https://docs.nosible.com/)

[All Research](https://nosible.com/blog)

Related Research

![The NOSIBLE Relevance Lab showing what Atlas links to Eli Lilly, with selpercatinib traced to Eli Lilly through Loxo Oncology.](https://nosible.com/images/2026/10/atlas-tickers-relevance-lab-2000x857.png)

[NOSIBLE World](https://nosible.com/blog/tag/nosible-world)

[Information Retrieval](https://nosible.com/blog/tag/information-retrieval)

[Web Search](https://nosible.com/blog/tag/web-search)

[Trading Signals](https://nosible.com/blog/tag/trading-signals)

### [The Hidden Path to Every Ticker: 15% to 22% Coverage, Zero Look-Ahead](https://nosible.com/blog/the-hidden-path-to-every-ticker)

2026-10-06

11 min read

![Compression is intelligence: NOSIBLE Search indexes the web, World produces events, and Atlas maps facts into a knowledge graph.](https://nosible.com/images/2026/09/atlas-nosible-stack-3640x1560.png)

[NOSIBLE World](https://nosible.com/blog/tag/nosible-world)

[Information Retrieval](https://nosible.com/blog/tag/information-retrieval)

[Web Search](https://nosible.com/blog/tag/web-search)

### [Announcing Atlas: The Point-in-time Knowledge Graph](https://nosible.com/blog/announcing-atlas-the-point-in-time-knowledge-graph)

2026-09-30

20 min read

![NOSIBLE World knowledge graph showing entity connections over a decade](https://nosible.com/images/2026/07/kg-hero-decade.png)

[Web Search](https://nosible.com/blog/tag/web-search)

[Information Retrieval](https://nosible.com/blog/tag/information-retrieval)

[NOSIBLE World](https://nosible.com/blog/tag/nosible-world)

### [Point-in-Time Knowledge Graphs over Named Entities with NOSIBLE World](https://nosible.com/blog/point-in-time-knowledge-graphs-over-named-entities)

2026-07-16

8 min read

> Use polygon queries to explore World events across space and time, map entities with Atlas, and focus satellite monitoring where and when it matters.

**URL:** https://nosible.com/blog/polygon-queries-geospatial-temporal-intelligence
