示例#1
0
def generate(mrgeo, gateway, gateway_client):
    global _initialized

    if _initialized:
        # Make sure the object have the proper code in them.  In case somewhere we've made a new mrgeo object
        for method_name, code in _mapop_code.items():
            if not hasattr(mrgeo, method_name):
                setattr(mrgeo, method_name,
                        code.compile(method_name).get(method_name))
        for method_name, code in _rastermapop_code.items():
            if not hasattr(RasterMapOp, method_name):
                setattr(RasterMapOp, method_name,
                        code.compile(method_name).get(method_name))
        for method_name, code in _vectormapop_code.items():
            if not hasattr(VectorMapOp, method_name):
                setattr(VectorMapOp, method_name,
                        code.compile(method_name).get(method_name))

        return

    jvm = gateway.jvm
    client = gateway_client
    java_import(jvm, "org.mrgeo.job.*")
    java_import(jvm, "org.mrgeo.mapalgebra.MapOpFactory")
    java_import(jvm, "org.mrgeo.mapalgebra.raster.RasterMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.vector.VectorMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.raster.MrsPyramidMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.IngestImageMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.ExportMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.PointsMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.MapOp")
    java_import(jvm, "org.mrgeo.utils.SparkUtils")
    java_import(jvm, "org.mrgeo.hdfs.utils.HadoopFileUtils")

    java_import(jvm, "org.mrgeo.data.*")

    mapops = jvm.MapOpFactory.getMapOpClasses()

    for rawmapop in mapops:
        mapop = str(rawmapop.getCanonicalName().rstrip('$'))

        # Skip IngestImageMapOp because there is an explicit method defined in
        # MrGeo class for ingesting an image, and _get_instance_type will raise
        # an exception when run against that map op.
        if not mapop.endswith(".IngestImageMapOp") and not mapop.endswith(
                ".InlineCsvMapOp"):
            java_import(jvm, mapop)

            cls = JavaClass(mapop, gateway_client=client)

            signatures = jvm.MapOpFactory.getSignatures(mapop)
            instance = _get_instance_type(signatures, gateway, cls, mapop)
            # for s in signatures:
            #     print("signature: " + s)

            for method in cls.register():
                ooCodes = None
                procCodes = None
                if method is not None:
                    name = method.strip().lower()
                    if len(name) > 0:
                        if name in _reserved:
                            # print("reserved: " + name)
                            continue
                        elif name in _operators:
                            # print("operator: " + name)
                            ooCodes = _generate_operator_code(
                                mapop, name, signatures, instance)
                        else:
                            # print("method: " + name)
                            ooCodes = _generate_oo_method_code(
                                gateway, client, mapop, name, signatures,
                                instance)
                            procCodes = _generate_procedural_method_code(
                                gateway, client, mapop, name, signatures,
                                instance)

                if ooCodes is not None:
                    for method_name, code in ooCodes.items():
                        # if method_name == "export":
                        #     print(code.generate(), file=sys.stderr)

                        if instance == 'RasterMapOp':
                            _rastermapop_code[method_name] = code
                            setattr(RasterMapOp, method_name,
                                    code.compile(method_name).get(method_name))
                        elif instance == "VectorMapOp":
                            _vectormapop_code[method_name] = code
                            setattr(VectorMapOp, method_name,
                                    code.compile(method_name).get(method_name))
                        elif is_instance_of(gateway, cls, jvm.MapOp):
                            # _mapop_code[method_name] = code
                            _rastermapop_code[method_name] = code
                            setattr(RasterMapOp, method_name,
                                    code.compile(method_name).get(method_name))
                            _vectormapop_code[method_name] = code
                            setattr(VectorMapOp, method_name,
                                    code.compile(method_name).get(method_name))

                if procCodes is not None:
                    for method_name, code in procCodes.items():
                        print(method_name)
                        _mapop_code[method_name] = code
                        setattr(mrgeo, method_name,
                                code.compile(method_name).get(method_name))

    _initialized = True
    print("add: " + str(hasattr(mrgeo, "add")))
示例#2
0
文件: mrgeo.py 项目: hzmarrou/mrgeo
    def _load_mapops(self):
        jvm = self.gateway.jvm
        client = self.gateway._gateway_client
        java_import(jvm, "org.mrgeo.job.*")
        java_import(jvm, "org.mrgeo.mapalgebra.MapOpFactory")
        java_import(jvm, "org.mrgeo.mapalgebra.raster.RasterMapOp")
        java_import(jvm, "org.mrgeo.mapalgebra.raster.MrsPyramidMapOp")
        java_import(jvm, "org.mrgeo.mapalgebra.ExportMapOp")
        java_import(jvm, "org.mrgeo.mapalgebra.vector.VectorMapOp")
        java_import(jvm, "org.mrgeo.mapalgebra.MapOp")
        java_import(jvm, "org.mrgeo.utils.SparkUtils")

        java_import(jvm, "org.mrgeo.data.*")

        mapops = jvm.MapOpFactory.getMapOpClasses()

        for rawmapop in mapops:
            mapop = str(rawmapop.getCanonicalName().rstrip('$'))

            java_import(jvm, mapop)

            cls = JavaClass(mapop, gateway_client=client)

            if self.is_instance_of(cls, jvm.RasterMapOp):
                instance = 'RasterMapOp'
            elif self.is_instance_of(cls, jvm.VectorMapOp):
                instance = 'VectorMapOp'
            elif self.is_instance_of(cls, jvm.MapOp):
                instance = "MapOp"
            else:
                # raise Exception("mapop (" + mapop + ") is not a RasterMapOp, VectorMapOp, or MapOp")
                print("mapop (" + mapop + ") is not a RasterMapOp, VectorMapOp, or MapOp")
                continue

            signatures = jvm.MapOpFactory.getSignatures(mapop)

            for method in cls.register():
                codes = None
                if method is not None:
                    name = method.strip().lower()
                    if len(name) > 0:
                        if name in self.reserved:
                            # print("reserved: " + name)
                            continue
                        elif name in self.operators:
                            # print("operator: " + name)
                            codes = self._generate_operator_code(mapop, name, signatures, instance)
                        else:
                            # print("method: " + name)
                            codes = self._generate_method_code(mapop, name, signatures, instance)

                if codes is not None:
                    for method_name, code in codes.iteritems():
                        # print(code)

                        compiled = {}
                        exec code in compiled

                        if instance == 'RasterMapOp':
                            setattr(RasterMapOp, method_name, compiled.get(method_name))
                        elif instance == "VectorMapOp":
                            #  setattr(VectorMapOp, method_name, compiled.get(method_name))
                            pass
                        elif self.is_instance_of(cls, jvm.MapOp):
                            setattr(RasterMapOp, method_name, compiled.get(method_name))
示例#3
0
def generate(gateway, gateway_client):
    global _initialized

    if _initialized:
        return

    jvm = gateway.jvm
    client = gateway_client
    java_import(jvm, "org.mrgeo.job.*")
    java_import(jvm, "org.mrgeo.mapalgebra.MapOpFactory")
    java_import(jvm, "org.mrgeo.mapalgebra.raster.RasterMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.vector.VectorMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.raster.MrsPyramidMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.IngestImageMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.ExportMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.PointsMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.MapOp")
    java_import(jvm, "org.mrgeo.utils.SparkUtils")
    java_import(jvm, "org.mrgeo.hdfs.utils.HadoopFileUtils")

    java_import(jvm, "org.mrgeo.data.*")

    mapops = jvm.MapOpFactory.getMapOpClasses()

    for rawmapop in mapops:
        mapop = str(rawmapop.getCanonicalName().rstrip('$'))

        # Skip IngestImageMapOp because there is an explicit method defined in
        # MrGeo class for ingesting an image, and _get_instance_type will raise
        # an exception when run against that map op.
        if not mapop.endswith(".IngestImageMapOp") and not mapop.endswith(".InlineCsvMapOp"):
            java_import(jvm, mapop)

            cls = JavaClass(mapop, gateway_client=client)

            signatures = jvm.MapOpFactory.getSignatures(mapop)
            instance = _get_instance_type(signatures, gateway, cls, mapop)
            # for s in signatures:
            #     print("signature: " + s)

            for method in cls.register():
                codes = None
                if method is not None:
                    name = method.strip().lower()
                    if len(name) > 0:
                        if name in _reserved:
                            # print("reserved: " + name)
                            continue
                        elif name in _operators:
                            # print("operator: " + name)
                            codes = _generate_operator_code(mapop, name, signatures, instance)
                        else:
                            # print("method: " + name)
                            codes = _generate_method_code(gateway, client, mapop, name, signatures, instance)

                if codes is not None:
                    for method_name, code in codes.items():
                        # print(code)

                        compiled = {}
                        exec code in compiled

                        if instance == 'RasterMapOp':
                            _rastermapop_code[method_name] = code
                            setattr(RasterMapOp, method_name, compiled.get(method_name))
                        elif instance == "VectorMapOp":
                            _vectormapop_code[method_name] = code
                            setattr(VectorMapOp, method_name, compiled.get(method_name))
                        elif is_instance_of(gateway, cls, jvm.MapOp):
                            _mapop_code[method_name] = code
                            setattr(RasterMapOp, method_name, compiled.get(method_name))
                            setattr(VectorMapOp, method_name, compiled.get(method_name))

    _initialized = True
示例#4
0
    def _load_mapops(self):
        jvm = self.gateway.jvm
        client = self.gateway._gateway_client
        java_import(jvm, "org.mrgeo.job.*")
        java_import(jvm, "org.mrgeo.mapalgebra.MapOpFactory")
        java_import(jvm, "org.mrgeo.mapalgebra.raster.RasterMapOp")
        java_import(jvm, "org.mrgeo.mapalgebra.raster.MrsPyramidMapOp")
        java_import(jvm, "org.mrgeo.mapalgebra.ExportMapOp")
        java_import(jvm, "org.mrgeo.mapalgebra.vector.VectorMapOp")
        java_import(jvm, "org.mrgeo.mapalgebra.MapOp")
        java_import(jvm, "org.mrgeo.utils.SparkUtils")

        java_import(jvm, "org.mrgeo.data.*")

        mapops = jvm.MapOpFactory.getMapOpClasses()

        for rawmapop in mapops:
            mapop = str(rawmapop.getCanonicalName().rstrip('$'))

            java_import(jvm, mapop)

            cls = JavaClass(mapop, gateway_client=client)

            if self.is_instance_of(cls, jvm.RasterMapOp):
                instance = 'RasterMapOp'
            elif self.is_instance_of(cls, jvm.VectorMapOp):
                instance = 'VectorMapOp'
            elif self.is_instance_of(cls, jvm.MapOp):
                instance = "MapOp"
            else:
                # raise Exception("mapop (" + mapop + ") is not a RasterMapOp, VectorMapOp, or MapOp")
                print("mapop (" + mapop +
                      ") is not a RasterMapOp, VectorMapOp, or MapOp")
                continue

            signatures = jvm.MapOpFactory.getSignatures(mapop)

            for method in cls.register():
                codes = None
                if method is not None:
                    name = method.strip().lower()
                    if len(name) > 0:
                        if name in self.reserved:
                            # print("reserved: " + name)
                            continue
                        elif name in self.operators:
                            # print("operator: " + name)
                            codes = self._generate_operator_code(
                                mapop, name, signatures, instance)
                        else:
                            # print("method: " + name)
                            codes = self._generate_method_code(
                                mapop, name, signatures, instance)

                if codes is not None:
                    for method_name, code in codes.iteritems():
                        # print(code)

                        compiled = {}
                        exec code in compiled

                        if instance == 'RasterMapOp':
                            setattr(RasterMapOp, method_name,
                                    compiled.get(method_name))
                        elif instance == "VectorMapOp":
                            #  setattr(VectorMapOp, method_name, compiled.get(method_name))
                            pass
                        elif self.is_instance_of(cls, jvm.MapOp):
                            setattr(RasterMapOp, method_name,
                                    compiled.get(method_name))
示例#5
0
def generate(gateway, gateway_client):
    global _initialized

    if _initialized:
        return

    jvm = gateway.jvm
    client = gateway_client
    java_import(jvm, "org.mrgeo.job.*")
    java_import(jvm, "org.mrgeo.mapalgebra.MapOpFactory")
    java_import(jvm, "org.mrgeo.mapalgebra.raster.RasterMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.vector.VectorMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.raster.MrsPyramidMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.IngestImageMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.ExportMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.PointsMapOp")
    java_import(jvm, "org.mrgeo.mapalgebra.MapOp")
    java_import(jvm, "org.mrgeo.utils.SparkUtils")
    java_import(jvm, "org.mrgeo.hdfs.utils.HadoopFileUtils")

    java_import(jvm, "org.mrgeo.data.*")

    mapops = jvm.MapOpFactory.getMapOpClasses()

    for rawmapop in mapops:
        mapop = str(rawmapop.getCanonicalName().rstrip('$'))

        java_import(jvm, mapop)

        cls = JavaClass(mapop, gateway_client=client)

        if is_instance_of(gateway, cls, jvm.RasterMapOp):
            instance = 'RasterMapOp'
        elif is_instance_of(gateway, cls, jvm.VectorMapOp):
            instance = 'VectorMapOp'
        elif is_instance_of(gateway, cls, jvm.MapOp):
            instance = "MapOp"
        else:
            # raise Exception("mapop (" + mapop + ") is not a RasterMapOp, VectorMapOp, or MapOp")
            print("mapop (" + mapop + ") is not a RasterMapOp, VectorMapOp, or MapOp")
            continue

        signatures = jvm.MapOpFactory.getSignatures(mapop)
        # for s in signatures:
        #     print("signature: " + s)

        for method in cls.register():
            codes = None
            if method is not None:
                name = method.strip().lower()
                if len(name) > 0:
                    if name in _reserved:
                        # print("reserved: " + name)
                        continue
                    elif name in _operators:
                        # print("operator: " + name)
                        codes = _generate_operator_code(mapop, name, signatures, instance)
                    else:
                        # print("method: " + name)
                        codes = _generate_method_code(gateway, client, mapop, name, signatures, instance)

            if codes is not None:
                for method_name, code in codes.items():
                    # print(code)

                    compiled = {}
                    exec code in compiled

                    if instance == 'RasterMapOp':
                        _rastermapop_code[method_name] = code
                        setattr(RasterMapOp, method_name, compiled.get(method_name))
                    elif instance == "VectorMapOp":
                        _vectormapop_code[method_name] = code
                        setattr(VectorMapOp, method_name, compiled.get(method_name))
                    elif is_instance_of(gateway, cls, jvm.MapOp):
                        _mapop_code[method_name] = code
                        setattr(RasterMapOp, method_name, compiled.get(method_name))
                        setattr(VectorMapOp, method_name, compiled.get(method_name))

    _initialized = True