<style type="text/css">
        <!--
                @page { margin: 0.79in }
                PRE.cjk { font-family: "WenQuanYi Zen Hei", monospace }
                P { margin-bottom: 0.08in }
        -->
        </style>


<pre class="western" style="margin-bottom:0.2in"><font color="#000080">#include</font><font color="#c0c0c0"> </font><font color="#008000">"main.h"</font>
<font color="#000080">#include</font><font color="#c0c0c0"> </font><font color="#008000">"ogrsf_frmts.h"</font>
<font color="#000080">#include</font><font color="#c0c0c0"> </font><font color="#008000">"ogr_p.h"</font>
<font color="#000080">#include</font><font color="#c0c0c0"> </font><font color="#008000">"cpl_conv.h"</font>
<font color="#000080">#include</font><font color="#c0c0c0"> </font><font color="#008000">"cpl_string.h"</font>
<font color="#000080">#include</font><font color="#c0c0c0"> </font><font color="#008000">"ogr_api.h"</font>
<font color="#000080">#include</font><font color="#c0c0c0"> </font><font color="#008000">"gdal.h"</font>
<font color="#808000">static</font><font color="#c0c0c0"> </font><font color="#808000">int</font><font color="#c0c0c0"> </font>TranslateLayer<font color="#000000">(</font><font color="#800080">OGRLayer</font><font color="#c0c0c0">  </font><font color="#000000">*</font>poPassedLayer<font color="#000000">,</font><font color="#800080">OGRDataSource</font><font color="#c0c0c0"> </font><font color="#000000">*</font>ODS<font color="#000000">,</font><font color="#808000">char</font><font color="#c0c0c0"> </font><font color="#000000">*</font>pszNewLayerName<font color="#000000">,</font><font color="#808000">int</font><font color="#c0c0c0">  </font>eGType<font color="#000000">);</font>
<font color="#808000">int</font><font color="#c0c0c0"> </font><font color="#800080">main</font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">)</font>
<font color="#000000">{</font>
<font color="#c0c0c0">     </font><font color="#808000">const</font><font color="#c0c0c0"> </font><font color="#808000">char</font><font color="#c0c0c0">  </font><font color="#000000">*pszFormat</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#008000">"ESRI</font><font color="#c0c0c0"> </font><font color="#008000">Shapefile"</font><font color="#000000">;</font>
<font color="#c0c0c0">     </font><font color="#808000">const</font><font color="#c0c0c0"> </font><font color="#808000">char</font><font color="#c0c0c0">  </font><font color="#000000">*pszDataSource</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#008000">"india_ds.shp"</font><font color="#000000">;</font>
<font color="#c0c0c0">     </font><font color="#808000">const</font><font color="#c0c0c0"> </font><font color="#808000">char</font><font color="#c0c0c0">  </font><font color="#000000">*pszDestDataSource</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#008000">"out.shp"</font><font color="#000000">;</font>
<font color="#c0c0c0">     </font><font color="#808000">char</font><font color="#c0c0c0"> </font><font color="#000000">*pszNewLayerName=</font>NULL<font color="#000000">;</font>
<font color="#c0c0c0">     </font><font color="#800080">OGRLayer</font><font color="#c0c0c0">        </font><font color="#000000">*poLayer;</font>
<font color="#c0c0c0">     </font><font color="#800080">OGRDataSource</font><font color="#c0c0c0">       </font><font color="#000000">*poDS;</font>
<font color="#c0c0c0">     </font><font color="#800080">OGRDataSource</font><font color="#c0c0c0">       </font><font color="#000000">*poODS=</font>NULL<font color="#000000">;</font>
<font color="#c0c0c0">      </font><font color="#808000">const</font><font color="#c0c0c0"> </font><font color="#808000">char</font><font color="#c0c0c0"> </font><font color="#000000">*pszDriverName</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#008000">"ESRI</font><font color="#c0c0c0"> </font><font color="#008000">Shapefile"</font><font color="#000000">;</font>
<font color="#c0c0c0">         </font><font color="#800080">OGRSFDriver</font><font color="#c0c0c0"> </font><font color="#000000">*poDriver;</font>
<font color="#c0c0c0">         </font>OGRRegisterAll<font color="#000000">();</font>
<font color="#c0c0c0">         </font><font color="#000000">poDriver</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#800080">OGRSFDriverRegistrar</font><font color="#000000">::</font>GetRegistrar<font color="#000000">()-></font>GetDriverByName<font color="#000000">(</font>
<font color="#c0c0c0">                     </font><font color="#000000">pszDriverName</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">         </font><font color="#808000">if</font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">poDriver</font><font color="#c0c0c0"> </font><font color="#000000">==</font><font color="#c0c0c0"> </font>NULL<font color="#c0c0c0"> </font><font color="#000000">)</font>
<font color="#c0c0c0">         </font><font color="#000000">{</font>
<font color="#c0c0c0">             </font>printf<font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#008000">"%s</font><font color="#c0c0c0"> </font><font color="#008000">driver</font><font color="#c0c0c0"> </font><font color="#008000">not</font><font color="#c0c0c0"> </font><font color="#008000">available.\n"</font><font color="#000000">,</font><font color="#c0c0c0"> </font><font color="#000000">pszDriverName</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">             </font>exit<font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000080">1</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">         </font><font color="#000000">}</font>
<font color="#c0c0c0">         </font><font color="#000000">poODS</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poDriver-></font><font color="#000000"><i>CreateDataSource</i></font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#008000">"out.shp"</font><font color="#000000">,</font><font color="#c0c0c0"> </font>NULL<font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">         </font><font color="#808000">if</font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">poODS</font><font color="#c0c0c0"> </font><font color="#000000">==</font><font color="#c0c0c0"> </font>NULL<font color="#c0c0c0"> </font><font color="#000000">)</font>
<font color="#c0c0c0">         </font><font color="#000000">{</font>
<font color="#c0c0c0">             </font>printf<font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#008000">"Creation</font><font color="#c0c0c0"> </font><font color="#008000">of</font><font color="#c0c0c0"> </font><font color="#008000">output</font><font color="#c0c0c0"> </font><font color="#008000">file</font><font color="#c0c0c0"> </font><font color="#008000">failed.\n"</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">             </font>exit<font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000080">1</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">         </font><font color="#000000">}</font>
<font color="#c0c0c0">         </font><font color="#000000">poDS</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poDriver-></font><font color="#000000"><i>Open</i></font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#008000">"india_ds.shp"</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">         </font><font color="#000000">poLayer=poDS-></font><font color="#000000"><i>GetLayerByName</i></font><font color="#000000">(</font><font color="#008000">"india_ds"</font><font color="#000000">);</font>
<font color="#c0c0c0">         </font><font color="#808000">if</font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">poDS</font><font color="#c0c0c0"> </font><font color="#000000">==</font><font color="#c0c0c0"> </font>NULL<font color="#c0c0c0"> </font><font color="#000000">)</font>
<font color="#c0c0c0">             </font><font color="#000000">{</font>
<font color="#c0c0c0">                 </font>printf<font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#008000">"Open</font><font color="#c0c0c0"> </font><font color="#008000">failed.\n"</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">                 </font>exit<font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000080">1</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">             </font><font color="#000000">}</font>
<font color="#c0c0c0">          </font><font color="#808000">int</font><font color="#c0c0c0"> </font><font color="#000000">nLayerCount;</font>
<font color="#c0c0c0">          </font><font color="#800080">OGRLayer</font><font color="#000000">**</font><font color="#c0c0c0"> </font><font color="#000000">papoLayers</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font>NULL<font color="#000000">;</font>
<font color="#c0c0c0">           </font><font color="#000000">nLayerCount</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poDS-></font><font color="#000000"><i>GetLayerCount</i></font><font color="#000000">();</font>
<font color="#c0c0c0">                </font>printf<font color="#000000">(</font><font color="#008000">"\n</font><font color="#c0c0c0"> </font><font color="#008000">%d"</font><font color="#000000">,nLayerCount);</font>
<font color="#c0c0c0">                </font><font color="#000000">papoLayers</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">(</font><font color="#800080">OGRLayer</font><font color="#000000">**)</font>CPLMalloc<font color="#000000">(</font><font color="#808000">sizeof</font><font color="#000000">(</font><font color="#800080">OGRLayer</font><font color="#000000">*)</font><font color="#c0c0c0"> </font><font color="#000000">*</font><font color="#c0c0c0"> </font><font color="#000000">nLayerCount);</font>
<font color="#c0c0c0">                </font><font color="#808000">for</font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#808000">int</font><font color="#c0c0c0"> </font><font color="#000000">iLayer</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000080">0</font><font color="#000000">;</font>
<font color="#c0c0c0">                     </font><font color="#000000">iLayer</font><font color="#c0c0c0"> </font><font color="#000000"><</font><font color="#c0c0c0"> </font><font color="#000000">nLayerCount;</font>
<font color="#c0c0c0">                     </font><font color="#000000">iLayer++</font><font color="#c0c0c0"> </font><font color="#000000">)</font>
<font color="#c0c0c0">                </font><font color="#000000">{</font>
<font color="#c0c0c0">                      </font><font color="#000000">poLayer</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poDS-></font><font color="#000000"><i>GetLayer</i></font><font color="#000000">(iLayer);</font>
<font color="#c0c0c0">                      </font><font color="#000000">papoLayers[iLayer]</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poLayer;</font>
<font color="#c0c0c0">                </font><font color="#000000">}</font>
<font color="#c0c0c0">            </font><font color="#000000">pszNewLayerName</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font>CPLStrdup<font color="#000000">(</font>CPLGetBasename<font color="#000000">(pszDestDataSource));</font>
<font color="#c0c0c0">            </font>printf<font color="#000000">(</font><font color="#008000">"%s"</font><font color="#000000">,pszNewLayerName);</font>
<font color="#c0c0c0">             </font>printf<font color="#000000">(</font><font color="#008000">"\n</font><font color="#c0c0c0"> </font><font color="#008000">%d"</font><font color="#000000">,poLayer-></font><font color="#000000"><i>GetFeatureCount</i></font><font color="#000000">());</font>
<font color="#c0c0c0">            </font><font color="#808000">int</font><font color="#c0c0c0"> </font><font color="#000000">eGType=</font><font color="#000080">5</font><font color="#000000">;</font>
<font color="#c0c0c0">            </font><font color="#808000">for</font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#808000">int</font><font color="#c0c0c0"> </font><font color="#000000">iLayer</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000080">0</font><font color="#000000">;</font>
<font color="#c0c0c0">                </font><font color="#000000">iLayer</font><font color="#c0c0c0"> </font><font color="#000000"><</font><font color="#c0c0c0"> </font><font color="#000000">nLayerCount;</font>
<font color="#c0c0c0">                </font><font color="#000000">iLayer++</font><font color="#c0c0c0"> </font><font color="#000000">)</font>
<font color="#c0c0c0">            </font><font color="#000000">{</font>
<font color="#c0c0c0">                 </font><font color="#800080">OGRLayer</font><font color="#c0c0c0">        </font><font color="#000000">*poLayer</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">papoLayers[iLayer];</font>
<font color="#c0c0c0">                 </font><font color="#808000">if</font><font color="#c0c0c0"> </font><font color="#000000">(poLayer</font><font color="#c0c0c0"> </font><font color="#000000">==</font><font color="#c0c0c0"> </font>NULL<font color="#000000">)</font>
<font color="#c0c0c0">                    </font><font color="#808000">continue</font><font color="#000000">;</font>
<font color="#c0c0c0">                  </font><font color="#800080">OGRLayer</font><font color="#000000">*</font><font color="#c0c0c0"> </font><font color="#000000">poPassedLayer</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poLayer;</font>
<font color="#c0c0c0">                  </font><font color="#808000">if</font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">!</font>TranslateLayer<font color="#000000">(</font><font color="#c0c0c0">  </font><font color="#000000">poPassedLayer,</font><font color="#c0c0c0"> </font><font color="#000000">poODS,pszNewLayerName,</font><font color="#c0c0c0"> </font><font color="#000000">eGType));</font>
<font color="#c0c0c0">                      </font><font color="#000000">{</font>
<font color="#c0c0c0">                         </font>exit<font color="#000000">(</font><font color="#000080">1</font><font color="#000000">);</font>
<font color="#c0c0c0">                       </font><font color="#000000">}</font>
<font color="#c0c0c0">            </font><font color="#000000">}</font>
<font color="#c0c0c0">   </font><font color="#808000">return</font><font color="#c0c0c0"> </font><font color="#000080">0</font><font color="#000000">;</font>
<font color="#000000">}</font>
<font color="#808000">static</font><font color="#c0c0c0"> </font><font color="#808000">int</font><font color="#c0c0c0"> </font>TranslateLayer<font color="#000000">(</font><font color="#800080">OGRLayer</font><font color="#c0c0c0">  </font><font color="#000000">*poSrcLayer,</font><font color="#800080">OGRDataSource</font><font color="#c0c0c0"> </font><font color="#000000">*poDstDS,</font><font color="#808000">char</font><font color="#c0c0c0"> </font><font color="#000000">*pszNewLayerName,</font><font color="#808000">int</font><font color="#c0c0c0">  </font><font color="#000000">eGType)</font>
<font color="#c0c0c0">   </font><font color="#000000">{</font>
<font color="#c0c0c0">        </font><font color="#800080">OGRLayer</font><font color="#c0c0c0">    </font><font color="#000000">*poDstLayer;</font>
<font color="#c0c0c0">        </font><font color="#800080">OGRFeatureDefn</font><font color="#c0c0c0"> </font><font color="#000000">*poSrcFDefn;</font>
<font color="#c0c0c0">        </font><font color="#800080">OGRFeatureDefn</font><font color="#c0c0c0"> </font><font color="#000000">*poDstFDefn</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font>NULL<font color="#000000">;</font>
<font color="#c0c0c0">        </font><font color="#800080">OGRSpatialReference</font><font color="#c0c0c0"> </font><font color="#000000">*poOutputSRS;</font>
<font color="#c0c0c0">        </font><font color="#000000">poSrcFDefn</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poSrcLayer-></font><font color="#000000"><i>GetLayerDefn</i></font><font color="#000000">();</font>
<font color="#c0c0c0">        </font><font color="#000000">poOutputSRS</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poSrcLayer-></font><font color="#000000"><i>GetSpatialRef</i></font><font color="#000000">();</font>
<font color="#c0c0c0">        </font><font color="#000000">poDstLayer</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poDstDS-></font><font color="#000000"><i>GetLayerByName</i></font><font color="#000000">(pszNewLayerName);</font>
<font color="#c0c0c0">         </font><font color="#000000">poDstLayer</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poDstDS-></font><font color="#000000"><i>CreateLayer</i></font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">pszNewLayerName,</font><font color="#c0c0c0"> </font><font color="#000000">poOutputSRS,</font>
<font color="#c0c0c0">                                               </font><font color="#000000">(</font><font color="#800080">OGRwkbGeometryType</font><font color="#000000">)</font><font color="#c0c0c0"> </font><font color="#000000">eGType);</font>
<font color="#c0c0c0">         </font><font color="#000000">poDstLayer-></font><font color="#000000"><i>SetStyleTable</i></font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">poSrcLayer-></font><font color="#000000"><i>GetStyleTable</i></font><font color="#c0c0c0"> </font><font color="#000000">()</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">          </font><font color="#808000">int</font><font color="#c0c0c0">         </font><font color="#000000">nSrcFieldCount</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poSrcFDefn-></font>GetFieldCount<font color="#000000">();</font>
<font color="#c0c0c0">          </font>printf<font color="#000000">(</font><font color="#008000">"%d"</font><font color="#000000">,nSrcFieldCount</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">          </font><font color="#000000">poDstFDefn</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poDstLayer-></font><font color="#000000"><i>GetLayerDefn</i></font><font color="#000000">();</font>
<font color="#c0c0c0">          </font><font color="#800080">OGRFeature</font><font color="#c0c0c0">  </font><font color="#000000">*poFeature;</font>
<font color="#c0c0c0">      </font>printf<font color="#000000">(</font><font color="#008000">"\n</font><font color="#c0c0c0"> </font><font color="#008000">2</font><font color="#c0c0c0"> </font><font color="#008000">%d"</font><font color="#000000">,poSrcLayer-></font><font color="#000000"><i>GetFeatureCount</i></font><font color="#000000">());</font>
<font color="#c0c0c0">      </font><font color="#800080">OGRFeature</font><font color="#c0c0c0">      </font><font color="#000000">*poDstFeature</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font>NULL<font color="#000000">;</font>
<font color="#c0c0c0">        </font><font color="#000000">poSrcLayer-></font><font color="#000000"><i>ResetReading</i></font><font color="#000000">();</font>
<font color="#c0c0c0">    </font><font color="#808000">while</font><font color="#000000">((poFeature</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poSrcLayer-></font><font color="#000000"><i>GetNextFeature</i></font><font color="#000000">())</font><font color="#c0c0c0"> </font><font color="#000000">!=</font><font color="#c0c0c0"> </font>NULL<font color="#000000">)</font>
<font color="#c0c0c0">               </font><font color="#000000">{</font>
<font color="#c0c0c0">                     </font><font color="#000000">poFeature</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poSrcLayer-></font><font color="#000000"><i>GetNextFeature</i></font><font color="#000000">();</font>
<font color="#c0c0c0">                     </font><font color="#800080">OGRGeometry</font><font color="#000000">*</font><font color="#c0c0c0"> </font><font color="#000000">poSrcGeometry</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poFeature-></font>GetGeometryRef<font color="#000000">();</font>
<font color="#c0c0c0">                     </font><font color="#000000">poDstFeature</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#800080">OGRFeature</font><font color="#000000">::</font>CreateFeature<font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">poDstLayer-></font><font color="#000000"><i>GetLayerDefn</i></font><font color="#000000">()</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">                     </font><font color="#000000">poDstFeature-></font><font color="#000000"><i>SetFID</i></font><font color="#000000">(</font><font color="#c0c0c0"> </font><font color="#000000">poFeature-></font>GetFID<font color="#000000">()</font><font color="#c0c0c0"> </font><font color="#000000">);</font>
<font color="#c0c0c0">                     </font><font color="#800080">OGRGeometry</font><font color="#000000">*</font><font color="#c0c0c0"> </font><font color="#000000">poDstGeometry</font><font color="#c0c0c0"> </font><font color="#000000">=</font><font color="#c0c0c0"> </font><font color="#000000">poDstFeature-></font>GetGeometryRef<font color="#000000">();</font>
<font color="#c0c0c0">                     </font><font color="#000000">poDstFeature-></font>SetGeometry<font color="#000000">(poSrcGeometry);</font>
<font color="#c0c0c0">             </font><font color="#000000">}</font>
<font color="#c0c0c0"> </font>
<font color="#808000">return</font><font color="#c0c0c0"> </font><font color="#000080">0</font><font color="#000000">;</font>
<font color="#000000">}</font></pre><p style="margin-bottom:0in">
<br>
</p>