An example of .shp file
In[]:=
data=Import["http://exampledata.wolfram.com/usamap.zip","Data"];
Dimensions
In[]:=
data//Dimensions
Out[]=
{2,4}
Looking at keys:
data〚1〛//Association//Keys
Out[]=
{LayerName,Geometry,Labels,LabeledData}
Looking at layer names:
In[]:=
Lookup["LayerName"]@data
Out[]=
{railroads,states}
Looking at labels:
In[]:=
Lookup["Labels"]@data
Out[]=
{{FNODE_,TNODE_,LENGTH,RAILRDL020,RROWNER1,RROWNER2,RROWNER3,MARK1,MARK2,MARK3},{AREA,PERIMETER,STATESP020,STATE,STATE_FIPS,ORDER_ADM,MONTH_ADM,DAY_ADM,YEAR_ADM}}
Looking at labelled data:
In[]:=
Lookup["LabeledData"]@data
Out[]=
Note labeled data of railroads and states are note the same:
In[]:=
Length/@Lookup["LabeledData"]@data
Out[]=
{10,9}
Create and association of list of association:
In[]:=
assoc=AssociationThread[Lookup["LayerName"]@data,#]&@Apply[Association,Transpose/@Apply[Thread[#1#2]&,Lookup["LabeledData"][data],{2}],{2}];
Create and association of list of association:
In[]:=
geometry=First/@(Map[<|"Geometry"#|>&,Lookup[{"Geometry"}]@data,{3}]//AssociationThread[Lookup["LayerName"]@data,#]&);
Join two associations and generate dataset for railroads:
In[]:=
Join@@@Transpose[Lookup["railroads"][{assoc,geometry}]]//Dataset
Out[]=
Join two associations and generate dataset for states:
In[]:=
Join@@@Transpose[Lookup["states"][{assoc,geometry}]]//Dataset
Out[]=