Comments (1)
Thanks for your words. You are right that it is currently geared towards geographical data to topojson. Better support for the other direction would be much welcome indeed.
There is already some within the code that makes this possible, but this could probably much improved. PR's definitely welcome!
Two possibilities:
First, if you parse a string into Topology()
, where the string contains "type": "Topology"
it is tried to serialise as geojson, and then convert to topojson again:
https://github.com/mattijn/topojson/blob/master/topojson/core/extract.py#L585
I can imagine that that is cumbersome. Based on some tests I also get strange outputs.
Second, there is another route. Parse your topojson as a dict and then use the serialise_as_geojson
function:
import topojson as tp
from topojson.utils import serialize_as_geojson
import geopandas as gpd
# create a topojson dictionary
data = tp.utils.example_data_africa()
topo = tp.Topology(data)
topojson_dict = topo.to_dict()
?topojson_dict
Type: dict String form: {'type': 'Topology', 'objects': {'data': {'geometries': [{'id': '1', 'type': 'Polygon', 'properti <...> [750884, 541353], [-8944, -6372], [-10232, 32], [-11708, -3243], [-9248, 3099], [-5987, -3779]]]} Length: 5 Docstring: dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)
# objectname is specific in each topojson file
geojson_dict = serialize_as_geojson(topojson_dict, objectname='data')
# check if it is correct geojson
gdf = gpd.GeoDataFrame.from_features(geojson_dict["features"])
gdf.plot()
Btw, the dequantization on arcs happens here:
https://github.com/mattijn/topojson/blob/master/topojson/utils.py#L445
The reason why there is a dequantization of multi(points) in the geometry function is because there is only a top-level storage of arcs in the topojson specification and strangely not for the (multi)point.
from topojson.
Related Issues (20)
- Topology modifies source data
- Topojson bbox should not be transformed when loading Topojson-dict HOT 1
- toposimplify wrongly applied on Topojson data from file
- Reduce decimal places when converting to GeoJSON HOT 2
- Shapely deprecation warnings in topojson 1.3 HOT 5
- Keep geojson properties HOT 6
- Merge multiple layers in a single topojson HOT 5
- Conversion to Typology object causes overlaps HOT 5
- tp.Topology.to_json(pretty=True) doesn't handle None correctly. (Doens't convert None to null) HOT 1
- Converting GeoJSON FeatureCollection to TopoJSON HOT 1
- BUG: `Topology.to_gdf` should keep the original index HOT 2
- holes in multipolygons are lost by simplification HOT 4
- Deprecation warning for shapely 2.0 HOT 3
- Wrong topologies/arcs being created? HOT 7
- Creating a topology for data without junctions and shared_coords=False, prequantize=False gives error
- Bug: polygons that entirely fill islands in another polygon are often not dedupped
- shared_coords=True vs shared_coords=False HOT 5
- Linestrings that follow the same path but where one contains extra redundant points are not deduplicated
- enh: include features that are possible with shapely 2.0
- tests failing, natural earth dataset changed HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from topojson.