<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle">P {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
</style>
</head>
<body fPStyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">
<p><font size="2"></p>
<div class="PlainText"><font face="Tahoma">Thank you Sean.</font></div>
<font face="Tahoma"></font></font>
<p></p>
<p><font size="2"><font face="Tahoma"></font></font> </p>
<p><font size="2"><font face="Tahoma">What I want to do is to compile C/C++ code into "_my_c_module.pyd" and then to be called by Python. The Python code passes an argument to C/C++.</font></font></p>
<p><font size="2"><font face="Tahoma">I did previously by passing a file name (str) or a numpy array as argument to C/C++, and it is all good. 
</font></font></p>
<p>This time I want to pass a gdal dataset as an argument:</p>
<p> </p>
<p>in Python:</p>
<p>    from osgeo import gdal</p>
<p>    import _my_c_module</p>
<p>    ds=gdal.Open('my_filename")</p>
<p>    result = _my_c_module.function1(ds)</p>
<p><font size="2"><font face="Tahoma"> </p>
<p class="PlainText">is this possible? If yes, how?</p>
<p class="PlainText"> </p>
<p class="PlainText"><br>
Shawn<br>
</p>
</font></font>
<div style="FONT-SIZE: 16px; FONT-FAMILY: Times New Roman; COLOR: #000000">
<hr tabindex="-1">
<div id="divRpF956507" style="DIRECTION: ltr"><font color="#000000" size="2" face="Tahoma"><b>From:</b> Sean Gillies [sean@mapbox.com]<br>
<b>Sent:</b> November-27-17 11:09 AM<br>
<b>To:</b> Shawn Gong<br>
<b>Cc:</b> gdal-dev@lists.osgeo.org<br>
<b>Subject:</b> Re: [gdal-dev] pass gdal dataset as an argument from Python to C<br>
</font><br>
</div>
<div></div>
<div>
<div dir="ltr">Shawn,
<div><br>
</div>
<div>PyObject and GDALDatasetH are incompatible types and you can't pass the former to a function that expects the latter. I'm surprised your program can compile with these incompatible types.</div>
<div><br>
</div>
<div>Do you mean for your module to extend GDAL's Python bindings? If you look inside the C code of GDAL's Python bindings you may be able to see how to get the GDALDatasetH associated with a Python dataset object.</div>
<div><br>
</div>
<div>Hope this helps,</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Thu, Nov 23, 2017 at 1:25 PM, Shawn Gong <span dir="ltr">
<<a href="mailto:SGONG@mdacorporation.com" target="_blank">SGONG@mdacorporation.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div>
<div style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma; COLOR: #000000; DIRECTION: ltr">
<div>
<p>Hi list,</p>
<p> </p>
<p>Has anyone done this before?</p>
<p>I try to pass a gdal dataset as an argument from Python to C.</p>
<p> </p>
<p>in my C code, I have</p>
<p>PyObject* py_my_func(PyObject *self, PyObject *args)<br>
{</p>
<p>    PyObject *poDataset;</p>
<p> </p>
<p>   if(!PyArg_ParseTuple(args, "Odd", &poDataset, &a1, &a2))<br>
  {<br>
    return NULL;<br>
  }</p>
<p> </p>
<p>  my_func(poDataset, a1, a2);<br>
}</p>
<p> </p>
<p>void my_func(GDALDatasetH hDataset, double a1, double a2)</p>
<p>{</p>
<p>}</p>
<p> </p>
<p>Python crashed and hDataset was NULL</p>
<p>Is it possible to do or I did something wrong?</p>
<p> </p>
<p>BTW, I have passed either a filename or a gdal array as an argument from Python to C, with success.</p>
<div style="FONT-SIZE: 13px; FONT-FAMILY: Tahoma">
<div class="m_3308011925270217570BodyFragment"><font size="2"><font face="Tahoma">
<div class="m_3308011925270217570PlainText"></div>
</font> </font></div>
<div class="m_3308011925270217570PlainText"><font face="Tahoma">Thanks,<br>
Shawn<br>
</font></div>
</div>
</div>
</div>
</div>
<br>
______________________________<wbr>_________________<br>
gdal-dev mailing list<br>
<a href="mailto:gdal-dev@lists.osgeo.org" target="_blank">gdal-dev@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/gdal-dev" rel="noreferrer" target="_blank">https://lists.osgeo.org/<wbr>mailman/listinfo/gdal-dev</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="gmail_signature">
<div dir="ltr">Sean Gillies</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>