When I perform a merge on two spatial dataframes, the SHAPE field converts to "object". Is there a way to re-set one of the SHAPE fields as a geometry field after the merge, or is there a way to maintain the SHAPE field as geometry?
e.g.
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">overlapRows</SPAN><SPAN class="punctuation token">(</SPAN>in_sdf<SPAN class="punctuation token">,</SPAN> master_sdf<SPAN class="punctuation token">,</SPAN> key<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">"""
Merge new attributes and point location with old attributes that aren't in the new dataset.
Includes new rows.
"""</SPAN>
join_sdf <SPAN class="operator token">=</SPAN> pd<SPAN class="punctuation token">.</SPAN>merge<SPAN class="punctuation token">(</SPAN>left<SPAN class="operator token">=</SPAN>in_sdf<SPAN class="punctuation token">,</SPAN> right<SPAN class="operator token">=</SPAN>master_sdf <SPAN class="punctuation token">,</SPAN> how<SPAN class="operator token">=</SPAN><SPAN class="string token">'outer'</SPAN><SPAN class="punctuation token">,</SPAN> on<SPAN class="operator token">=</SPAN>key<SPAN class="punctuation token">,</SPAN> indicator<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Number of all records: "</SPAN><SPAN class="punctuation token">,</SPAN> len<SPAN class="punctuation token">(</SPAN>join_sdf<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Number of new records: "</SPAN><SPAN class="punctuation token">,</SPAN> len<SPAN class="punctuation token">(</SPAN>join_sdf<SPAN class="punctuation token">[</SPAN>join_sdf<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'_merge'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="operator token">==</SPAN><SPAN class="string token">'left_only'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># if there's a duplicate, remove old attributes (y) and keep new attributes (x)</SPAN>
<SPAN class="keyword token">for</SPAN> fd <SPAN class="keyword token">in</SPAN> list<SPAN class="punctuation token">(</SPAN>join_sdf<SPAN class="punctuation token">.</SPAN>columns<SPAN class="punctuation token">.</SPAN>values<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> fd<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"_x"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
join_sdf<SPAN class="punctuation token">.</SPAN>rename<SPAN class="punctuation token">(</SPAN>columns <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">{</SPAN>fd <SPAN class="punctuation token">:</SPAN> fd<SPAN class="punctuation token">.</SPAN>replace<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"_x"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">,</SPAN> inplace<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">elif</SPAN> fd<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"_y"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">del</SPAN> join_sdf<SPAN class="punctuation token">[</SPAN>fd<SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">return</SPAN><SPAN class="punctuation token">(</SPAN>join_sdf<SPAN class="punctuation token">)</SPAN>
mergeRows <SPAN class="operator token">=</SPAN> overlapRows<SPAN class="punctuation token">(</SPAN>dwhPt<SPAN class="punctuation token">,</SPAN> dwhPl<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'prj_id'</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>mergeRows<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'SHAPE'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
Out<SPAN class="punctuation token">:</SPAN>
<SPAN class="number token">1331</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">'x'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="number token">517459.9827999994</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'y'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">1082018.6127000</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN>
<SPAN class="number token">1332</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">'x'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="number token">524068.436499998</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'y'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">998965.120000000</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN>
<SPAN class="number token">1333</SPAN> <SPAN class="punctuation token">{</SPAN><SPAN class="string token">'x'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="number token">600713.8193000033</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'y'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="operator token">-</SPAN><SPAN class="number token">986437.45459999</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN>
Name<SPAN class="punctuation token">:</SPAN> SHAPE<SPAN class="punctuation token">,</SPAN> dtype<SPAN class="punctuation token">:</SPAN> object
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>