您的位置:

解决方案:django GDALException("Equivalence testing only works with other Envelopes.")

  发布时间:2023-03-03 17:08:09
报错的原因这个错误通常是在使用时出现的。GDAL是一个开源的软件库,用于读写、转换和分析空间数据。在你的代码中,你可能试图使用GDAL的Envelope类的equals()方法来比较两个Envelope对象是否相等。如何解决为了解决这个问题,你需要在使用equals()方法之前检查你的代码,确保你传递给它的两个参数都是Envelope对象。这可能有助于你找出错误的原因,并找到解决问题的方法。在最后一个测试中,我们将一个ogr.Envelope对象与一个非Envelope对象进行比较,所以会打印的消息。

报错的原因

这个错误通常是在使用GDAL (Geospatial Data Abstraction Library) 时出现的。GDAL是一个开源的软件库,用于读写、转换和分析空间数据。

在你的代码中,你可能试图使用GDAL的Envelope类的equals()方法来比较两个Envelope对象是否相等。但是,这个方法只能用来比较两个Envelope对象,而不能用来比较一个Envelope对象和其他类型的对象。

因此,如果你试图比较一个Envelope对象和其他类型的对象,就会出现 "Equivalence testing only works with other Envelopes." 的错误消息。

要解决这个问题,你需要确保你使用equals()方法的两个参数都是Envelope对象,或者使用其他方法来比较这两个对象。

如何解决

为了解决这个问题,你需要在使用equals()方法之前检查你的代码,确保你传递给它的两个参数都是Envelope对象。

如果你不确定两个对象是否都是Envelope对象,你可以使用isinstance()函数来检查它们的类型:


if isinstance(obj1, Envelope) and isinstance(obj2, Envelope):
    # Use the equals() method
else:
    # Use a different method to compare the objects

如果你想使用其他方法来比较两个对象,你可以使用Python内置的 == 运算符来比较它们是否相等,或者使用其他方法来判断它们是否相似。

最后,如果你仍然无法解决问题,你可以尝试跟踪你的代码,找出哪些对象传递给了equals()方法,并检查它们的类型。这可能有助于你找出错误的原因,并找到解决问题的方法。

使用例子

是的,这里有一个使用isinstance()函数的例子:


from osgeo import ogr

def compare_envelopes(env1, env2):
    if isinstance(env1, ogr.Envelope) and isinstance(env2, ogr.Envelope):
        if env1.Equals(env2):
            print("The envelopes are equal")
        else:
            print("The envelopes are not equal")
    else:
        print("One or both objects are not ogr.Envelope objects")

# Create two Envelope objects
envelope1 = ogr.Envelope(0, 10, 0, 10)
envelope2 = ogr.Envelope(0, 10, 0, 10)

# Compare the envelopes
compare_envelopes(envelope1, envelope2)

# Output: The envelopes are equal

# Create an object that is not an ogr.Envelope
not_an_envelope = "This is not an ogr.Envelope object"

# Compare the envelope and the non-envelope object
compare_envelopes(envelope1, not_an_envelope)

# Output: One or both objects are not ogr.Envelope objects

在这个例子中,compare_envelopes()函数接受两个参数,并检查它们是否都是ogr.Envelope对象。如果是,就使用Envelope类的Equals()方法来比较它们是否相等。如果不是,就打印一条消息。

在最后一个测试中,我们将一个ogr.Envelope对象与一个非Envelope对象进行比较,所以会打印 "One or both objects are not ogr.Envelope objects" 的消息。